mcpField
E
exploratory-data-analysis

exploratory-data-analysis

github.com/jaechang-hits数据与数据库38477 次安装1 周前更新
代码仓库

关于 exploratory-data-analysis

面向科学数据分析者的探索性数据分析技能,指导识别多类科学文件、评估数据质量并生成结构化报告。涵盖从表格到组学数据的格式与领域特定检查。

主要功能

  1. 01识别科学文件格式与类别
  2. 02评估完整性、有效性和一致性
  3. 03执行统计与领域特定分析
  4. 04生成结构化 Markdown 报告
  5. 05提供常见格式参考

适用场景

  1. 01检查新收到的数据文件及其质量
  2. 02分析大型数据集前抽样评估
  3. 03为下游分析制定预处理建议

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jaechang-hits/sciagent-skills --skill exploratory-data-analysis

安装后在 Claude Code 中输入/exploratory-data-analysis确认已加载。

附带文件references/file_format_reference.md

详细介绍

科学数据探索性数据分析

概述

探索性数据分析(EDA)是指在正式分析之前,系统地检查科学数据文件,以了解其结构、内容、质量和特征。本指南介绍了检测文件类型、选择适当的分析方法、评估数据质量,以及针对所有主要科学数据领域生成全面报告的方法。

核心概念

科学数据类型类别
类别常见格式典型分析主要库
表格数据CSV、TSV、XLSX、Parquet汇总统计、分布、相关性、缺失值pandas、polars
序列数据FASTA、FASTQ、SAM/BAM长度分布、质量分数、GC 含量、比对统计BioPython、pysam
图像/显微镜数据TIFF、ND2、CZI、DICOM维度(XYZCT)、强度统计、元数据、校准tifffile、aicsimageio、nd2reader
光谱数据mzML、SPC、JCAMP、FID峰检测、基线、S/N 比、分辨率pymzml、nmrglue、pyteomics
结构数据PDB、CIF、MOL、SDF原子计数、键验证、B 因子、完整性BioPython、RDKit、MDAnalysis
数组/张量数据NPY、HDF5、Zarr、NetCDF形状、数据类型、取值范围、NaN/Inf 检查、分块结构numpy、h5py、zarr、xarray
组学数据H5AD、MTX、VCF、BED特征/样本计数、稀疏度、注释完整性scanpy、pyranges、cyvcf2
格式检测策略
  1. 基于扩展名:将文件扩展名映射到类别(主要方法)
  2. 魔数:检查文件头以识别二进制格式(HDF5:\x89HDF,GZIP:\x1f\x8b)
  3. 内容探查:对于有歧义的扩展名(.txt、.dat、.csv),检查前几行中的分隔符、表头或格式标记
  4. 复合扩展名:通过从最右侧扩展名向内检查,处理 .ome.tiff、.nii.gz、.tar.gz
数据质量维度
  • 完整性:缺失值、空字段、截断的记录
  • 一致性:维度匹配、数据类型兼容、跨字段验证
  • 有效性:值处于预期范围内、编码正确、符合格式规范
  • 溯源信息:仪器元数据、软件版本、处理历史
  • 唯一性:重复记录、冗余特征

决策框架

Data file received
├── What is the file type?
│   ├── Known extension → Look up in format reference
│   ├── Unknown extension → Magic bytes / content sniffing
│   └── Directory (e.g., .d, .zarr) → Check internal structure
│
├── What category does it belong to?
│   ├── Tabular → Summary stats, distributions, correlations
│   ├── Sequence → Length/quality distributions, composition
│   ├── Image → Dimensions, channels, intensity, metadata
│   ├── Spectral → Peaks, baseline, resolution, S/N
│   ├── Structural → Atom/bond validation, geometry checks
│   ├── Array → Shape, dtype, value range, sparsity
│   └── Omics → Feature counts, sample QC, annotation check
│
├── How large is the file?
│   ├── Small (<100 MB) → Load fully, comprehensive analysis
│   ├── Medium (100 MB–1 GB) → Sample or lazy evaluation
│   └── Large (>1 GB) → Stream/chunk, representative sampling
│
└── What is the analysis goal?
    ├── Pre-pipeline QC → Focus on completeness, format compliance
    ├── Data understanding → Statistics, distributions, patterns
    ├── Troubleshooting → Compare against expected format/values
    └── Documentation → Full report with recommendations
快速参考:按数据类型选择分析方法
数据类型首要检查项核心分析可视化
表格数据数据类型、形状、空值describe()、相关性、离群值直方图、散点图、热图
序列数据记录数、格式长度分布、质量、组成质量图、长度直方图
图像数据维度、位深强度统计、通道信息缩略图、直方图
光谱数据扫描数、m/z 范围峰检测、TIC、基线光谱图、TIC 色谱图
结构数据原子/残基计数B 因子、缺失残基Ramachandran 图、接触图
数组数据形状、数据类型统计信息、NaN 检查切片可视化
组学数据基因 × 细胞矩阵稀疏度、QC 指标小提琴图、PCA

最佳实践

  1. 始终先检查文件完整性 — 在深入分析前,确认文件完整(未被截断)且可读。根据预期检查文件大小
  2. 先抽样再全面分析大型文件 — 对于包含数百万条记录的文件,先分析有代表性的样本(前 N 条记录、随机样本或分层样本),以便快速获取反馈
  3. 尽可能使用惰性/流式读取器 — pl.scan_parquet()、h5py 数据集切片和 pysam 索引访问可避免内存溢出
  4. 验证元数据与数据是否一致 — 交叉核对声明的维度与实际数据,确认列数与表头一致,并检查时间戳是否单调递增
  5. 以量化方式报告数据质量 — “X 列有 5.2% 的值缺失”比“有些值缺失”更有用。请包含完整率、异常值数量和格式合规评分
  6. 考虑数据来源 — 记录仪器类型、软件版本、处理步骤以及已应用的任何预处理。这些背景会影响后续分析方案的选择
  7. 提出可执行的建议 — 不要只描述数据;还要建议具体的预处理步骤(归一化方法、插补策略)、适当的分析方法,以及需要留意的潜在问题
  8. 确保分析可复现 — 在报告中包含库版本、参数选择和随机种子,以便复现探索性数据分析(EDA)
  9. 尽早检查批次效应 — 对于多样本数据集,在合并之前比较不同批次、板或运行的数据分布
  10. 谨慎处理厂商专有格式 — 许多仪器会生成专有格式(.nd2、.czi、.raw)。请记录所用读取器库及其版本,因为不同格式的支持情况各异

常见陷阱

  1. 认为 CSV 就是干净的表格数据 — CSV 文件可能使用不一致的分隔符、混杂编码、包含嵌入的换行符,或引号格式错误。避免方法:使用 pd.read_csv(engine='python') 提高稳健性;使用 chardet 检查编码

  2. 忽略缺失值的表示方式 — 科学数据使用多种空值表示形式:NA、NaN、-999、空字符串、#N/A、.。避免方法:指定 na_values 参数;检查数值列中的哨兵值

  3. 根据被截断的文件得出结论 — 大型文件传输可能会悄无声息地失败。避免方法:检查文件大小,将记录数与预期值核对,并检查 EOF 标记

  4. 对文件使用错误的读取器 — 有些扩展名含义不明确(.raw 可能指 Thermo MS、XRD 或图像;.d 可能指 Agilent 目录或通用数据)。避免方法:结合魔数和上下文(来源仪器)进行区分

  5. 大型数据集导致内存溢出 — 将 10 GB 的 CSV 加载到 pandas DataFrame 中会失败。避免方法:先检查文件大小;对于大于 100 MB 的文件,使用分块读取、惰性求值或抽样

  6. 忽略坐标系和单位 — 显微镜数据可能使用像素或微米;光谱数据可能使用波长、波数或能量。避免方法:从元数据中提取并报告单位;核实校准信息

  7. 将所有列视为相互独立 — 科学表格数据通常具有层级结构(重复样本嵌套在不同条件中)。避免方法:计算相关性之前,根据列名和元数据识别实验设计

  8. 跳过特定格式的质量指标 — 通用统计数据无法发现领域特有的问题(例如 FASTQ 中的 Phred 质量分数、晶体学中的 R 因子、MS 中的质量准确度)。避免方法:查阅格式参考资料,了解领域特定的 QC 指标

  9. 过度解读小样本 — 对前 1000 行进行 EDA,可能无法代表完整数据集的分布。避免方法:从文件的多个位置抽样;报告样本量和抽样方法

  10. 不检查重复项 — 合并数据集和数据库导出中常见重复记录。避免方法:尽早检查完全重复项和近似重复项;报告重复率

工作流

步骤 1:识别文件
  • 提取文件扩展名(处理复合扩展名:.ome.tiff、.nii.gz)
  • 在参考目录中查找格式
  • 如果格式未知:检查魔数、查看前几行,并询问用户来源仪器
  • 记录:格式名称、类别、典型内容、推荐的库
步骤 2:初步评估
  • 文件大小、创建日期、权限
  • 对于二进制格式:验证文件完整性(检查文件头和文件尾)
  • 对于文本格式:检测编码、分隔符和换行符
  • 对于目录:列出内容并检查预期结构
步骤 3:加载数据
  • 如果缺少所需的库,则安装(提供 pip install 命令)
  • 使用合适的读取器,并显式指定参数(dtype、编码、列)
  • 对于大型文件:先加载元数据,再抽样数据
  • 记录:维度(行数 × 列数,或 X×Y×Z×C×T)、数据类型、内存占用
步骤 4:质量评估
  • 完整性:统计每列/字段中的空值,检查是否截断
  • 有效性:检查范围、验证数据类型、检查格式合规性
  • 一致性:进行跨字段验证,检测重复项
  • 领域特定:Phred 分数(FASTQ)、B 因子(PDB)、质量准确度(MS)、强度范围(显微镜)
步骤 5:统计分析
  • 汇总统计量(均值、中位数、标准差、最小值、最大值、四分位数)
  • 分布特征(偏度、众数、异常值)
  • 相关结构(适用于多变量数据)
  • 领域特定指标(GC 含量、覆盖度、分辨率、S/N 比)
第 6 步:生成报告

生成结构化的 Markdown 报告,包含:

  1. 标题:文件名、时间戳、文件大小
  2. 格式信息:类型、说明、典型用例
  3. 数据结构:维度、数据类型、内存占用
  4. 质量评估:完整性评分、有效性检查、发现的问题
  5. 统计摘要:关键指标和分布
  6. 关键发现:值得注意的模式、潜在问题、异常
  7. 建议:预处理步骤、适当的分析方法、推荐使用的工具

保存为 {original_filename}_eda_report.md。

捆绑资源

  • references/file_format_reference.md — 涵盖全部 6 个类别(生物信息学、化学、显微成像、光谱学、蛋白质组学/代谢组学、通用)的最常见科学文件格式速查目录,包含每种格式的扩展名、说明、Python 库和关键 EDA 方法

未从原项目迁移:6 个按类别划分的格式目录文件(共 3,616 行)包含 200 多种格式的详细条目。捆绑的参考资料整合了约 50 种最常见的格式。对于罕见或供应商专有的格式,请查阅官方库文档。

延伸阅读

  • McKinney, W. (2017). Python for Data Analysis(第 2 版)——基于 pandas 的 EDA 方法
  • VanderPlas, J. (2016). Python Data Science Handbook ——使用 matplotlib 和 scikit-learn 进行 EDA
  • Tukey, J. (1977). Exploratory Data Analysis ——EDA 的奠基性理念
  • Bio-Formats 文档:https://www.openmicroscopy.org/bio-formats/ ——显微成像格式参考
  • PSI 标准格式:https://www.psidev.info/ ——蛋白质组学/MS 数据标准

相关技能

  • matplotlib-scientific-plotting ——用于 EDA 报告的可视化
  • polars-dataframes ——高效的表格数据加载与分析
  • scanpy-scrna-seq ——单细胞组学 EDA 工作流
  • zarr-python ——大型数据集的分块数组数据访问
  • pysam-genomic-files ——对 BAM/CRAM/VCF 文件进行索引访问

评论

支持 Markdown