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">

# データをクリーニングする際によくあるミス

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/9cc0eb86-622c-80df-d7fd-59cd57eda270.png" width="700">

### <font color="MediumBlue">スペルミスをチェックしない</font>

スペルミスは、タイピングや入力ミスと同じくらい、シンプルな間違いです。ほとんどの場合、間違ったスペルや一般的な文法上の間違いは検出できますが、名前や住所などの場合は難しくなります。たとえば、表計算ソフトで顧客データのテーブルを操作しているときに、「John」という顧客の名前がところどころ「Jon」と間違って入力されていることがあります。表計算ソフトのスペルチェックでは、おそらくこのようなエラーは検出されません。したがって、スペルミスをダブルチェックして検出しなければ、 分析結果に間違いが生じてしまいます。 

### <font color="MediumBlue">エラーを文書化するのを忘れる</font>

エラーを文書化することは、その解決方法を示すことでもあり、将来的にそのようなエラーを回避するのに役立つだけでなく、大きな時間の節約になります。たとえば、表計算ソフト上で数式にエラーを見つけたとします。
ある列の日付の一部が正しくフォーマットされていないことに気づいた時点で、この修正方法をメモしておけば、次に数式が崩れたときに参照でき、トラブルシューティングにつながります。 
また、エラーを記録しておくと、作業の変化を把握しやすくなり、修正がうまくいかなかったときに後戻りすることができます。 

### <font color="MediumBlue">誤ったフィールドの値をチェックしない</font>

誤ったフィールドの値は、不適切なフィールドに値が入力されたときに発生します。これらの値は正しくフォーマットされている可能性があるので、 注意しないと発見するのが難しくなります。たとえば、都市と国の列を持つデータセットがあるとします。これらは同じ種類のデータであるため、簡単に混同してしまいます。しかし、国名の列にあるスペインをすべて見つけようとしたときに、誤って都市名の列にスペインが入力されていたとしたら、重要なデータを見逃してしまうことになります。データが正しく入力されているかどうかを確認することは、正確で完全な分析を行うためのカギです。 

### <font color="MediumBlue">欠落している値を見落とす</font>

データセットに欠落した値があると、エラーが発生し、不正確な結果になることがあります。たとえば、過去 3 カ月間の売上高の合計を求めようとしたときに、1 週間分の取引が欠けていたら、計算が不正確になります。
ベストプラクティスとして、データ完全性と一貫性を維持し、できるだけデータをきれいに保つようにしましょう。

### <font color="MediumBlue">全体像ではなくデータのサブセットを見る</font>

クリーニングを行う際には、関連するすべてのデータについて考えることが重要です。これにより、データが語るストーリーの全体像を理解し、起こりうるすべてのエラーに注意を払うことができます。たとえば、鳥の移動パターンに関するデータをさまざまなソースから取得しているにもかかわらず、1 つのソースだけをクリーニングした場合、データの一部が繰り返されていることに気がつかない可能性があります。これは、のちの分析で問題となります。重複のような一般的なエラーを避けるには、データの各フィールドに同様の注意を払う必要があります。

### <font color="MediumBlue">ビジネス上の目標を見失う</font>

データをクリーニングしていると、データセットについて新しく、興味深い発見をすることがあります。しかし、その発見によって、目の前のタスクを疎かにしてはいけません。例えば、天気予報のデータを使って、自分の住んでいる街で雨が降る平均日数を調べていたら、降雪についても興味深いパターンがあることに気づくかもしれません。それもとても面白いのですが、今解決しようとしている問いかけとは関係がありません。好奇心が旺盛なことは素晴らしいことです。しかし、好奇心によって本来の目的から目をそらさないようにしましょう。  

### <font color="MediumBlue">エラーの原因を修正していない</font>

エラーそのものを修正することは重要です。しかし、そのエラーが実は大きな問題の一部である場合、問題の原因を突き止める必要があります。そうでなければ、同じエラーを何度も修正しなければならなくなります。たとえば、チーム全員の進捗状況を把握するためのスプレッドシートがあるとします。しかし、異なる人が異なる値を入力するため、テーブルが破損し続けます。このような問題を一つずつ修正し続けることもできますが、データ入力を効率化して、全員が同じやり方でできるようにするのが得策です。エラーの原因に対処することは、長い目で見れば多くの時間を節約することにつながります。 

### <font color="MediumBlue">データ クリーニングの前にシステムを分析しない</font>

データをクリーニングして将来のエラーを回避するためには、ダーティデータの根本的な原因を理解する必要があります。あなたが自動車整備士だとします。車の修理を始める前に、問題の原因を突き止めるでしょう。データも同じです。まず、エラーがどこから発生しているのかを把握します。データ入力のミス、スペルチェックの未設定、フォーマットの不備、重複などが原因かもしれません。そして、不良データがどこから来るのかを理解すれば、それをコントロールし、データをクリーンに保つことができるのです。

### <font color="MediumBlue">データ クリーニングの前にデータをバックアップしない</font>

データのクリーンアップを始める前に、積極的にデータのバックアップを作成しておくとよいでしょう。プログラムがクラッシュしたり、変更によってデータセットに問題が発生した場合、いつでも保存したバージョンに戻り、復元することができます。データのバックアップを取るという簡単な手順を踏むだけで、何時間もの作業、そして何よりも頭痛の種を減らすことができるのです。 

### <font color="MediumBlue">納期・工程にデータクリーニング期間を考慮していない</font>

良いものをつくるには時間がかかりますが、それはデータクリーニングでも同じです。プロセスを進め、納期を確認する際には、このことを念頭に置いておく必要があります。データクリーニングのための時間を確保すれば、ステークホルダーの納期をより正確に見積もることができ、また、納期調整を依頼するタイミングを知ることにも役立ちます。