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形状、dtype、値の範囲、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 は、右端の拡張子から内側に向かって確認します
データ品質の側面
  • 完全性:欠損値、空のフィールド、途中で切れたレコード
  • 一貫性:次元の一致、互換性のある dtype、フィールド間の検証
  • 妥当性:想定範囲内の値、適切なエンコーディング、形式への準拠
  • 来歴:計測機器のメタデータ、ソフトウェアのバージョン、処理履歴
  • 一意性:重複レコード、冗長な特徴量

判断フレームワーク

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
クイックリファレンス:データの種類に応じた分析方法
データの種類最初に確認する項目中核となる分析可視化
表形式dtypes、形状、null 値describe()、相関、外れ値ヒストグラム、散布図、ヒートマップ
配列レコード数、形式長さの分布、品質、組成品質プロット、長さのヒストグラム
画像次元、ビット深度強度統計、チャネル情報サムネイル、ヒストグラム
スペクトルスキャン数、m/z 範囲ピーク検出、TIC、ベースラインスペクトルプロット、TIC クロマトグラム
構造原子数/残基数B ファクター、欠損残基ラマチャンドランプロット、コンタクトマップ
配列形状、dtype統計、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、. など、さまざまな null 表現が使われます。回避方法: 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:品質評価
  • 完全性:列/フィールドごとの null 数を数え、途中で切り詰められていないか確認します
  • 妥当性:範囲チェック、データ型の検証、形式への準拠
  • 一貫性:フィールド間の検証、重複の検出
  • 分野固有: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 つのカテゴリ別形式カタログファイルには、200 を超える形式の詳細な項目が含まれていました(合計 3,616 行)。同梱のリファレンスには、最もよく使われる約 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 ファイルへのインデックス付きアクセス

コメント