TT Lab
はじめる
学ぶ 学習パス コース

顧客データを扱う

顧客データはサンプルデータのような顔をしていない

TT Labで続きを見る

一言でいうと

データクレンジングで本当の決定は、どのツールを使うかではなく、何を捨てるかの基準を誰が決めるかです。

なぜ必要なのか

チュートリアルのCSVは、列の数が一定で、空欄がなく、数値の列には数値だけが入っています。顧客が渡すCSVはそうではありません。

実際に出会うものを挙げると、次のとおりです。フィールドが1つ足りない行。顧客名が空の行。金額の列にN/Aや-が入った行。負の金額。前後に空白が付いた名前。同じ会社がMOONSHOPとmoonshopの2通りで入ってきたもの。同じ注文番号が2回出てきて、片方は日付の形式だけが違うもの。そして、2026-08-20、2026/08/20、08/20/2026が1つのファイルに混ざっているもの。

ここで初心者がする間違いは、すぐにクレンジングスクリプトを書き始めることです。そうすると、必ず2つのことが起こります。1つ目に、スクリプトが静かにデータを消します。2つ目に、顧客があとで「なぜうちの売上はこれしかないのですか」と尋ねます。

どう動くのか

順序は数える → 分類する → 合意する → クレンジングするです。

まず数えます。全体の何行のうち、何行がルールに違反しているかです。この数字がなければ、クレンジング結果が正しいかどうかを判定できません。226行のうち5行が壊れているのと、226行のうち180行が壊れているのは、まったく違う状況で、後者なら、クレンジングではなくデータ抽出そのものをやり直さなければなりません。

次に分類します。壊れた理由を種類別に分けます。構造の問題(フィールド数)、欠損(空の値)、型の問題(数値の位置に文字)、範囲の問題(負の値・非現実的な値)、重複です。この分類が重要なのは、種類ごとに処理方針が違うからです。フィールド数が合わない行はたいてい捨てなければなりませんが、顧客名が空の行は、捨てることも、미상(韓国語で「不明」を意味する語です)で埋めることもできます。その決定は、エンジニアではなく業務担当者が行います。

その次が合意です。ここがFDEの仕事です。「金額が負の行4件は返金に見えますが、今回の集計から除外しますか、別に数えますか」という質問を投げることです。この質問をしなければ、あとで数字が合わないときに、説明する根拠がありません。

最後がクレンジングです。そして、クレンジングスクリプトは、必ず捨てた行の数を出力しなければなりません。静かに消すスクリプトは時限爆弾です。

現場での姿

重複の除去で最もよく起こる事故を1つ紹介します。

「メールアドレスが同じなら重複なので、1つだけ残す」というルールで、グループ化して整理するコードがあります。ほとんどの場合、うまく動きます。ところが、メールアドレスが空の行があると、それらがすべて1つのグループにまとめられて、互いに別の顧客なのに1人しか残らず、残りはすべて削除されます。

同じ落とし穴が名前の正規化にもあります。前後の空白を取り除いて小文字に変えるのは良い習慣ですが、そうすると、kimcoffeeとkimcoffee31のように、もともと別の2人の顧客が似て見え始めます。正規化は比較のためのものであって、マージの根拠ではありません。

そこで実務のルールを1つ。重複判定のキーに欠損が入りうるなら、欠損の行は重複判定から完全に外して、別に数えます。

クレンジング結果をどう証明するのか

クレンジングが終わったことを何で示すかが、実際の業務の半分です。「実行しました」だけでは、誰もその数字を使えません。そのため、クレンジングスクリプトは、結果のデータと一緒に、何があったかを書いたレポートを出す必要があります。

最低限、この5行は必要です。

最後の行が特に重要です。行数が2%減ったのに売上合計が30%減ったなら、それはクレンジングではなく事故です。大きな取引が数件、除外されたという意味で、そうした行ほど形式が特殊である可能性が高いからです。行数だけを見ていると、これを見逃します。

元に戻せるようにすることも重要です。原本を上書きせず、捨てた行は消す代わりに別のファイルに残します。そうすれば、あとで「この注文はなぜ集計にないのですか」という質問に、数秒で答えられます。捨てた行のファイルには、原本の行番号も一緒に書いておくとよいです。顧客が自分のファイルでその行を直接開いて見られれば、会話が速くなります。

最後に、ルールはコードではなく文書とコードの両方に同じ言葉で書かれている必要があります。クレンジングのルールがコードにしかなければ、数か月後に誰もそれを知らず、新しい担当者が別のルールで作り直します。そのときから、同じ原本から2つの違う数字が出始め、その2つのうちどちらが正しいかを判定する根拠が消えます。

文書には、ルールごとにそれを決めた人と日付を一緒に書いておきます。あとでルールを変えてよいかを尋ねる相手がその行に書かれていれば、新しく来た人が1人で判断して済ませてしまうことがなくなります。

次のラボですること

25行の注文CSVから、壊れた行をルールどおりに取り除き、捨てた行の数を数え、クレンジング結果の合計と日付別の集計まで作ります。規模は小さいですが、種類は現場そのままです。