データクリーニングと変換
AIを使って乱雑なデータをクリーニング——不整合の修正、重複処理、フォーマット標準化、生データを信頼性の高いデータセットに変換するパイプラインの構築。
プレミアムコースコンテンツ
このレッスンはプレミアムコースの一部です。Proにアップグレードすると、すべてのプレミアムコースとコンテンツを利用できます。
- すべてのプレミアムコースを利用
- 1,000以上のAIスキルテンプレート付き
- 毎週新しいコンテンツを追加
🔄 前回のおさらい: レッスン3では、AIでデータベーススキーマを設計しました——ビジネス要件から適切な型、制約、インデックスを持つ正規化テーブルへ。今回は本当の課題:それらのテーブルに入るデータがめったにきれいではないという現実に取り組みます。
データ品質の問題
すべてのデータベース担当者が知っている真実:データは乱雑です。顧客名の大文字小文字が不統一。電話番号が5つの異なるフォーマット。日付がYYYY-MM-DDとMM/DD/YYYYの混在。重複がいたるところに。
AIはデータクリーニングを、何時間もの手動スクリプティングからガイド付きの体系的プロセスに変えます。問題を説明すれば、AIがクリーンアップスクリプトを生成します。
ステップ1:クリーニング前にプロファイリング
データを理解せずにクリーニングを始めないでください。各カラムのNULL/空値の数、ユニーク値の数(不整合の検出)、日付フォーマットの一貫性、数値カラムの安全なキャスト可能性、潜在的な重複(同じメール、異なる名前)をAIにプロファイリングさせます。
✅ 確認クイズ: プロファイリングクエリで「都市と都道府県のユニーク値」を確認する理由は?(都市・都道府県カラムは不整合の温床。「東京」「東京都」「Tokyo」「とうきょう」が同じカラムに存在する可能性。ユニーク値を見ればデータの乱雑さが正確にわかり、標準化のアプローチを計画できる。クリーニング作業の80%が2-3カラムに集中していることも多い。)
ステップ2:クリーニングパイプラインの構築
問題がわかったら、AIにクリーニングスクリプトを生成させます。具体的なデータ品質の問題をリストアップし、それぞれに対する標準化ルールを指定して、冪等(安全に再実行可能)なスクリプトを依頼します。
日本語データ特有の課題:
- 全角・半角の混在(「0123」と「0123」、「A」と「A」)
- カタカナ・ひらがなの表記揺れ(「サーバ」と「サーバー」)
- 住所フォーマットの不統一(都道府県の有無、番地の表記)
- 人名の姓名順序と区切り(スペースの有無)
ステップ3:結果の検証
クリーニング後、変換が正しく機能したか検証します:必須カラムにNULLがないこと、フォーマットの一貫性、合理的な範囲内の値、重複の排除。
行数チェックが重要。 生データ10,000行からクリーニング後8,500行になったら、消えた1,500行の説明が必要。すべて重複?検証で弾かれた?説明のつかないデータ損失は重大な警告サイン。
ETLパターン
繰り返しデータロードには、Extract-Transform-Load(ETL)パイプラインを構築します。ステージングテーブルにロードし、クリーニング変換を適用し、検証し、本番テーブルにマージ。
✅ 確認クイズ: ETLパイプラインが本番テーブルに直接ロードせずステージングテーブルを使う理由は?(ステージングテーブルにより本番に触れる前にデータのクリーニングと検証が可能。CSVに不正データが含まれていてもステージングで検出——本番テーブルはクリーンなまま。安全バッファ:生データをロードし、クリーニングし、検証し、良いデータだけを本番にマージ。汚れたデータがアプリケーションに到達するのを防止。)
まとめ
- クリーニング前に必ずデータをプロファイリング——問題の全体像を把握してから体系的にアプローチ
- AIがデータ品質問題の説明からクリーニングスクリプトを生成し、何時間もの手動作業を数分に
- クリーニングスクリプトは冪等(安全に再実行可能)にする
- SQLは一括標準化(日付、フォーマット、重複排除)に、Pythonは複雑なロジック(ファジーマッチング、APIルックアップ)に使用
- クリーニング後は必ず検証:NULL、フォーマット一貫性、合理的な範囲、すべての削除行の説明
次のレッスン
次は「クエリ最適化とパフォーマンス」——AIを使って低速クエリを見つけ修正する方法を学びます。
理解度チェック
まず上のクイズを完了してください
レッスン完了!