Googleデータアナリティクス：データクリーニングの検証の始め方（チェックリスト）

# はじめに

本記事は、Googleデータアナリティクスのプロフェッショナル認定証のプログラムより、参照させて頂いています。興味を持った方は、是非受講してみてください。

https://www.coursera.org/professional-certificates/data-analytics-japanese

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/b583930d-fecb-13ad-85a2-3f44e309d8a5.png" width="800">

# データクリーニングの検証の始め方 

検証は、あらゆる分析プロジェクトに おいて重要な部分です。 検証を行わない限り データ主導の意思決定において インサイトが信頼できるかどうか 知る術はありません。 検証はいわば、承認印のようなものです。

***<font color="MediumVioletRed">『検証とは、データクリーニングが適切に実施され その結果得られたデータが 正確で信頼できると確認するプロセス』</font>***

これには、期待値と現状を比較し 手動でデータクリーニングすることも 含まれます。 

### <font color="MediumBlue">クリーンアップする前のデータセットと 現在のデータとを比較する</font>

検証プロセスにおける最初のステップは クリーンアップする前のデータセットと 現在のデータとを比較することです。 ダーティなデータを見直し、 共通の問題点がないか確認するのです。 

- たとえば、NULL がたくさんあったとします。 この場合、クリーンデータをチェックして NULL が存在しないことを確認します。 そのためには、データを手動で検索するか 条件付き書式設定やフィルタなどの ツールを活用します。
- あるいは、誰かが製品名を 何度も間違えて入力しているなど よくある誤字脱字が見られるかもしれません。 このような場合は クリーンデータで FIND を実行して スペルミスがないことを確認します。

#### 表計算ツールを使った修正例

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/3395f565-18b1-e1c6-9694-e5cfbef2c395.png" width="300">

#### SQLを使った修正例

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/05614824-aee6-d2e5-577f-37c3f97c5347.png" width="400">


### <font color="MediumBlue">プロジェクトの全体像を把握する</font>

これは、実際に解決すべき ビジネス上の課題や プロジェクト全体の目標に 焦点を当てるとともに 課題を解決し、目標を達成するための データが実際にあると 確認する機会でもあります。

プロジェクトは時としてリセットし、全体像を 見直す時間を取ることが重要です。 なぜならプロジェクトは気づかないうちに いつのまにか 進化したり、 変化したりすることがあるためです。 
- 例えば、ある e コマース企業が 商品の改善に役立つ情報を得るため 1,000 人の顧客を対象に アンケートを実施するとします。 しかし回答が集まり始めると、 顧客が e コマースの Web サイト、つまり プラットフォーム自体に不満を抱いている、 というコメントが多いと気づきます。 そこで、アナリストはそこに着目し始めます。 もちろん、顧客の購買体験は e コマースビジネスにとって重要ですが、 それはプロジェクトの本来の目的ではありません。 この場合、アナリストは一旦立ち止まって 焦点を合わせ直し、本来の課題解決に 立ち戻る必要があります。

プロジェクトの全体像を把握するには、 次の 3 つのことが必要です。 

- ***<font color="MediumVioletRed">データを使って解決したい ビジネス上の課題を考える</font>***
    - 課題を見失ったままでは どのデータが分析に適しているのかが わかりません。 課題ファーストで分析に取り組むことは どのプロジェクトのどの段階でも重要です。 そのデータが、実際にビジネスの課題解決を 可能にするものか、 確認する必要があるのです。 
- ***<font color="MediumVioletRed">プロジェクトの目標を 考慮する</font>***
    - 商品に関する顧客のフィードバックを 分析したい、というだけでは 十分ではありません。 本当に必要なのは、フィードバックを得て その商品を改良すること、 これこそが目的なのです。 そのうえで収集、クリーニングしたデータが 実際にその目標の達成に役立つもので あるかどうか、知る必要があります。 
- ***<font color="MediumVioletRed">そのデータが課題を解決し、 プロジェクトの目的を達成できるもので あるかどうかを検討する</font>***
    - データがどこから来たのか考え データ収集とクリーニングの プロセスをテストするのです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/c4d1147d-961b-dd0c-23be-9bfb36e32c81.png" width="700">

データアナリストは時々 自分のデータに慣れすぎて 何かを見落としたり、思い込みが 激しくなったりすることがあります。

そのため、この段階でチームメンバーに 新たな視点でデータを見直してもらい 他の人からフィードバックを 得ることが非常に重要です。

またこの段階では、データの中に 不審な点や問題のありそうな点がないか 気づくこともできます。 もう一度、一歩下がって全体像を把握し ***<font color="MediumVioletRed"> 「この数字は意味があるのか」</font>*** と 自問してみましょう。

- e コマースの例に戻りましょう。 データアナリストが、顧客満足度調査の クリーンアップされたデータを レビューしているとします。 アンケートはもともと 1,000 人の顧客に 送られたものですが、もしデータの中に 1,000 人以上の回答があることを 発見したらどうなるでしょうか？ これは、一人の顧客がアンケートに複数回 答える方法を見つけた、という ことかもしれません。 あるいは、データクリーニングの プロセスで何か問題が発生し フィールドが重複していた 可能性もあります。 いずれにせよこれは データクリーニングプロセスに戻って 問題を修正するべきであることを 示すサインです。

データの検証は、 分析から得られるインサイトを 信頼できるものにします。 企業が大きな間違いを避けるための、 データクリーニングの重要な部分です。 これもまた、データアナリストの 腕の見せ所です。

# チェックリスト

よくある問題の特定と修正ができているか、確認しましょう。以下はその例です。

- **エラーの発生源**: データセットに含まれるエラーの原因を見つけるために、適切なツールや関数を使用しましたか？
- **NULL**: 条件付き書式やフィルターを使用してNULLを検索しましたか？
- **単語のスペルミス**: スペルミスはすべて特定しましたか？
- **数字の入力間違い**: 数字が正しく入力されているか、ダブルチェックしましたか？
- **余分なスペースや文字**: TRIM で余分なスペースや文字を削除しましたか？
- **重複**: Remove Duplicates 関数や SQL の DISTINCT を使って、重複を削除しましたか？
- **データ型の不一致**: 数値、日付、文字列のデータが正しく入力されているか確認しましたか？
- **文字列の乱れ（矛盾）**: すべての文字列が一貫性を持ち、意味のあるものであると確認しましたか？
- **日付のフォーマットの乱れ（矛盾）**: データセット全体で一貫した日付のフォーマットが保たれていますか？
- **誤解を招く変数ラベル(列)**: 列の名前は適切なものですか？
- **データの切り捨て**: 修正すべきデータの切り捨てや、欠落がないか確認しましたか？
- **ビジネスの論理性**: ビジネスに関する知識に基づいて、データが意味をなしているか確認しましたか？