ひとことで言うと#
データの構造(カラム数、型)、品質(欠損率、重複、外れ値)、統計的特性(分布、カーディナリティ)を体系的に調査し、分析やパイプライン構築の前に「このデータは使えるか」を判断するプロセス。
押さえておきたい用語#
- カーディナリティ(Cardinality)
- あるカラムに含まれるユニークな値の数。カーディナリティが極端に高い(IDのように全行異なる)か低い(フラグ列のように2値)かで、分析方針が変わる。
- 欠損パターン(Missing Pattern)
- データの欠損がランダムに発生しているか、特定条件で偏っているかを表す特性。偏りがある場合、欠損の補完方法に注意が必要になる。
- スキーマ(Schema)
- テーブルのカラム名、データ型、制約条件を定義した構造仕様のこと。プロファイリングではスキーマと実データの乖離を検出する。
- データリネージ
- データがどこから来て、どう加工されたかの流れを示す経路図。プロファイリングの結果と合わせて品質問題の原因追跡に使う。
データプロファイリングの全体像#
こんな悩みに効く#
- 新しいデータソースを分析に使いたいが、中身がどうなっているかわからない
- データ移行後に「元データと合わない」トラブルが頻発する
- 分析を進めてから欠損や異常に気づいてやり直すことが多い
基本の使い方#
データの物理的な構造を確認する。
- 行数・カラム数: 想定通りのサイズか
- データ型: 日付がテキストになっていないか、数値が文字列になっていないか
- スキーマとの差異: ドキュメントに書かれたスキーマと実データの乖離を検出
- ツール: pandas-profiling、Great Expectations、dbt tests
データの品質に関する問題を洗い出す。
- 欠損率: 各カラムのNULL率。5%以上なら補完方法を検討
- 重複率: 主キーに重複がないか
- 外れ値: 統計的に極端な値がないか(IQR法やZ-score)
- フォーマット違反: メールアドレス、電話番号、日付のフォーマットが正しいか
データの統計的な特性を把握し、分析やモデリングの方針に反映する。
- 分布の形状: 正規分布か、偏りがあるか、二峰性か
- カーディナリティ: カテゴリ変数のユニーク数が多すぎないか
- 相関: 特徴量間の多重共線性がないか
- ここまでの結果をプロファイルレポートとしてまとめ、関係者と共有する
具体例#
顧客分析の精度を上げるため、外部の気象データ(5年分、180万行)を購入検討していたECサイト(年商20億円)。導入前にプロファイリングを実施。
| 項目 | 結果 |
|---|---|
| 行数 | 1,823,400行(想定通り) |
| 欠損率(降水量) | 2.3%(許容範囲) |
| 欠損率(気温) | 0.1% |
| 地点コードのカーディナリティ | 867(想定の842と差異あり) |
| 気温の外れ値 | 最大値58.2°C(明らかなエラー) |
地点コードに25個の不明コードが混入しており、データ提供元に確認すると廃止観測点のデータだった。気温58.2°Cはセンサー異常。これらを除外するクレンジングルールを定義してから導入を決定。プロファイリングなしで取り込んでいたら、異常値が売上予測モデルの精度を大きく下げていたはず。
従業員800名の製造業が基幹システムをリプレースする際、移行対象データ(受注テーブル430万行)のプロファイリングを実施した。
重大な問題が3つ見つかった。
- 受注日の 0.8%(約3.4万件)が「1900-01-01」。旧システムのデフォルト値が残っていた
- 顧客コードの 3.2% が現行マスタに存在しない(削除済み顧客への参照)
- 金額カラムの 1,200件 がマイナス値。返品処理のフラグが別カラムにあり、金額をマイナスにする運用が混在していた
これらを移行前に修正し、移行後の照合テストでの不一致を 0.01%以下 に抑えた。プロファイリングなしで移行していたら、数百件の照合エラーの原因調査に数週間を費やすところだった。
不動産テック企業(従業員50名)が物件価格予測モデルを構築するにあたり、社内の物件データ(12万件)をプロファイリングした。
統計プロファイルで発見した特性が、モデル設計に直結した。
- 価格分布が強い右裾。対数変換が必要
- 「築年数」と「駅徒歩分数」の相関は r=-0.15 で弱い。両方とも特徴量として使える
- 「管理費」の欠損率が 28%。欠損パターンを調べると、戸建て物件で集中的に欠損しており、「管理費なし」を意味する構造的欠損だった。NULLではなく0で補完すべき
プロファイリングの結果を元にしたモデルのMAE(平均絶対誤差)は 約320万円。プロファイリングなしで素朴にモデルを組んだ場合のMAE 約510万円 と比較して 37% の精度改善になった。
やりがちな失敗パターン#
- プロファイリングを飛ばして分析を始める — 「早く結果を出したい」と焦ってプロファイリングを省略し、分析の途中で品質問題に気づいてやり直す。30分のプロファイリングが数日の手戻りを防ぐ
- 構造だけ確認して品質・統計を見ない — カラム数と型だけ確認して「OK」とするのは不十分。欠損率、分布、外れ値まで見ないと分析の落とし穴に気づけない
- プロファイル結果を記録しない — その場で確認して終わりにすると、後から「このデータの欠損率はいくつだったか」が再現できない。レポートとして保存し、データカタログに紐づける
- 一度プロファイルしたら安心する — データは日々更新される。パイプラインに品質テストを組み込み、プロファイルの自動監視を継続する
まとめ#
データプロファイリングは「このデータ、使って大丈夫?」を分析前に判断するための調査プロセス。構造・品質・統計の3層を体系的にチェックすることで、分析の精度を上げ、手戻りを防ぐ。地味だが、データを扱うすべてのプロジェクトの最初のステップとして定着させる価値がある。