見出し画像

データ分析をするなら生データを見よう!

機械学習とか統計とかそういう手法はネットのあちこちにあるんですが基本の基本である生データを見るべきという話が見つからないので、その重要性と観点を紹介します。

このnoteを読んでほしい人

最近データ分析をする機会があるけどちゃんとしたデータ分析の教育を受けていない人を対象に書いています。
マーケティングやセールスなどビジネス職でもデータを分析して判断をする機会は増えていると思います。SQLでBigQueryやRedshiftからデータを集計するようなケースです。集計自体はSQLでやるとこまで出来るようになったけど

「なんか分析に手間取る」
「思っていたように集計できない」
「自分の分析に自信がない」...etc

という話をよく聞きます。そんな人に今回取り上げている「生データを見る」という視点をぜひ身につけていただければと思います。

なぜ生データを見るべきなのか?

生データ(ローデータ / raw data)とはデータベースに保存されている実際のデータ(レコード)のことです。なぜこれを見るべきなのか?それは「想像しているデータが本当に入っているのか確認するため」そして「データから想像をふくらませるため」です。つまり、あなたの頭にあるイメージをキャリブレーションし、豊かにすることが目的です。
データベースのレコードは様々な流入経路から保存されています。昨今ではクラウドサービスを連携させていることが多いため多様なサービスからデータを取得していることが多いため作法が違うことが多いです。また、サービスに関わる人が多くなり、様々な歴史的背景などから保存の形式が異なっていたりすることは多々あります。
データの状態は様々な理由から想像しているのとは違うことがあります。それを知らないまま集計すると大きな間違いを含んだまま使われてしまいます。これは正しいデータを集計するために手間取ったり誤った判断を生みかねません。生のデータを見ずにいきなり集計するクエリを流して実行するのは危険なのです
加えて、実際にデータを眺めることであなたの中にあるイメージをより豊かに具体的にすることができます。どんな分布なのか、どんなデータが入っているのか…そんな感覚を得ることができます。

それでは、どうやって・どのような観点から生データを見たらよいのでしょうか?まずは「どうやって?」を説明します。

------------------------------------

どうやって生データをみるべきか?

私がよく見るのは最新のデータとランダムサンプリングです。これを1000件くらい眺めます。

1. 最新のデータ

idやcreated_atが新しいデータのことです。これを見る目的は現状でどのようにデータが入力されているのか見るためです。クエリにするとこんな感じでしょうか。

SELECT *
FROM [TABLE_NAME]
ORDER BY [id or created_at] DESC
LIMIT 1000
;

2. ランダムサンプリング

ランダム抽出したデータです。これは偏りなくデータを見たときに分布やデータ形式を眺めることが目的です。最新のデータだけだと一部のユーザーデータなどが固まっているため全体を俯瞰することが難しいためランダムサンプリングしたデータを見ます。
Redshiftならクエリにするとこんな感じ。ランダムにする関数はデータベースによって違うので詳しくは調べてください。

SELECT *
FROM [TABLE_NAME]
ORDER BY RAND()
LIMIT 1000
;

------------------------------------

どのような観点から生データを見るべきか?

次に、どのような観点で生データを見るべきなのか紹介します。
正直言って、見るべき点はデータ分析の目的やデータの整備状態によって様々あります。
なので最終的には経験がものを言うのですが、ここでは絶対に見るべき観点を3つ紹介します。

1. 集計対象のデータがどう格納されているのか知る

バックアップ頻度によってデータの状態は違ってきます。
分析用のデータベースは本番環境からバックアップされていることが多いかと思います。このとき、バックアップする方法によってデータの状態が全然違います。分析用のデータベースは本番とは違う状態になっていることを念頭において分析しなければいけません。
例えば差分バックアップの場合は分析用のデータベースにあるデータはアップデートされているか確認すべきです。idの重複だけ確認してバックアップしているときは変更差分を更新しないケースがあります。
すべてバックアップする場合はバックアップの日付ごとに同じidのレコードが存在することになります。その場合はバックアップした日付で切っていかないと重複して数え上げることになり異常に合計値などが大きくなります。
単純にある瞬間のスナップショットを保存している場合はいつのデータなのか確認しましょう。何か大きなアップデートがあった前後だと想定しているデータではなかったりします。
バックアップの方式によってデータの重複や形式が変わってきます。一見わかりにくいので集計してしまうとわかりにくくなってしまうので分析前にバックアップ方式を確認しておきましょう。

2. データの分布を想像する

データの分布は想像しているのと同じですか?
入っているデータの分布は集計しなくてもランダムサンプリングして1000件くらい流し見すればなんとなくわかります。
データに偏りがあるのかまんべんなく分布しているのか見ておくことは重要です。偏りがあるならどこらへんの値を中心に分布しているのか見当をつけましょう。どこかの値を中心に分布していたり0と1に偏っていたりすることは多いです。データを眺めながらどんなグラフになるのか簡単に想像しておくとグラフを作ったときに理解が深まります。
極端な値(異常値)が混じっていないか知ることも有用です。そのために生データに加えてSQLのmaxやminを使って確認するのも良いですね。
文字列ならばどんなデータが入っているのか眺めているとかなり示唆に富むことが多いです。記号の使われ方や大文字・小文字、半角全角などのゆらぎがどのくらいあるのか見ておくと良いです。

3. データの型や形式を見る

入っているデータの型や形式は想像と同じですか?
データの流入経路(入力元)によって本質的に同じものが異なる状態で入力されていることは多々あります。
よくあるケースが、デフォルト値やエラー値はnanや0、空文字列など様々な方法で入力されていることがあります。これを確認しないとデフォルト値を弾くための条件を間違うことがあります。また、エラー値が-1で保存されていたりすると合計をとったときに値がおかしなことになってしまいます。
こういったデータの状態を確認しないとあとで痛い目をみます(体験談😇)

------------------------------------

今回はデータ分析の基本の基本ということで生データを見ることの重要性生データをどのように見ればよいのか重要な観点を紹介しました。
こういった本当の基本はなかなか紹介されないことが多いのですが、簡単にデータ分析の効率と精度を高めることができるとても重要な手法です。
データ分析をやり始めた人の役にたてば幸いです。


この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

役にたったらシェアしていただけると嬉しいです
33
某Fintech企業の人工知能の中の人。 データ分析・機械学習・データサイエンス・金融工学…etc Twitterのフォローもどうぞ!
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。