見出し画像

データ量と分析ツールの関係

こんにちは、よさそう®です。

データ分析に使うツールについて聞かれることがあります。答えは使うツールありきよりも、どれだけのデータを扱うのか?を考えることが大切です。

たとえばちょっとした切り傷には絆創膏を貼りますよね。切り傷に包帯をぐるぐる巻にすると、ちょっと大げさですよね。止血や治療という目的は果たせますが。。。
ということでデータ分析も取り扱うデータの量によってツールを検討することが大切です。

それでは私が普段分析するときのデータ量と使うツールの関係性をご紹介します。

50万件以下

この場合、圧倒的にExcelやGoogle Spread Sheetといった表計算ツールが作業しやすいです。
たとえば50万人分の会員データを性別、年齢別に集計したいといった場面ですね。

このときに活躍するのがピボットテーブルです。
性別、年齢別の会員数を知りたい、入会時期別の会員数を知りたいといったときに、サクッと集計できます。

しかも表計算ツールにはもれなくグラフ機能が付属しています。なので数表を作ったら、すぐに手軽に誰でもグラフを作れることもメリットです。

50万件から1,000万件

このくらいの大きさのデータ、特に100件を超えると表計算ツールでは重くなるので、Rやsqliteを使います。

Rではtidyverseというライブラリを使うことが多く、いまどきのパソコンであれば1,000万件程度の集計はあっさりと行えます。
tidyverseの利点はSQL感覚でデータを扱えること、そしてデータ処理のプロセスについて可読性が高いことです。
たとえば、「会員データを性別でグループ化して、平均購入金額を求める」というのはこんな感じで表現します。

df ->
 group_by(性別) %>%
 summrize(平均購入金額=mean(購入金額))

dfがデータが読み込まれたデータフレームという塊です。それを起点として、まず性別でグループ化して、その結果を次のsummarize関数に引き渡して、購入金額の平均値をmean関数で求めて、その結果を平均購入金額にしてください、というおまじないです。

これだけで1,000万件程度までのデータを普通のパソコンで余裕で扱えます。習得が難しいと思われるかもしれません。でもRは無料で使えて、WindowsでもMacでも使えますし、ソフトウェアをインストールさえすれば使えるので、覚える価値ありです。

1,000万件から5,000万件

このくらいの規模のデータになると、リレーショナル・データベースが必要になります。過去数年分の購買データやWebサイトなどのログデータの分析だとこのくらいを扱うかと思います。

そんなときに私が活用するのがMySQLです。ソフトウェア自体は無料で使えます。WindowsでもMacでも使えます。

データを格納するテーブルをきちんと設計して、SQLを組んであげれば瞬時に期待する情報を集計できます。

またMySQL8.0からWindow関数が使えるようになりました。これが凄まじく便利です。それまでプログラムを書かないとできなかったようなことができます。
たとえばこんなことがSQL文ひとつで実現できます。

  • 全データを対象に、お客さまID単位で、前回の購入日を今回の購入日の横にくっつけて、日付の差分を計算する。

  • 全データを対象に、お客さまID単位で、購入回ごとの購入金額を累積していく。

一昔前なら集計するプログラムやストアード・プロシージャーというものを書かないとできなかったことが、1回のSQLでできるようになったのは隔世の感があります。

5,000万件超え

いわゆる”ビッグデータ”の序の口くらいのサイズ感です。さまざまなログデータやセンサーデータなどを扱うケースとなります。
ここまでくると、クラウド上のNoSQLデータベースを使わないと、前処理や集計だけでとんでもなく時間がかかります。

ということでGoogleのBigQueryやAWSのAthenaを使って分析します。私はお客さまのご要望に応じて両方を使い分けています。どちらかというとBigQueryを使うケースが多いです。

BigQueryは有償のサービスとなります。ですが億単位のデータを扱うときには、とても高速にデータハンドリングできるのでお金を払ってでも使う価値があります。
そしてBigQueryでもSQLで集計できるので、MySQLなどを使う感覚でデータを取り扱えて便利です。

一方で、最近ではBigQuery慣れしてしまったので、小さいデータでもBigQueryを使うこともあります。データが小さければ一月あたり数円程度で利用できます。

いかがでしたでしょうか?あくまでも私の主観なのですが、これからあなたがデータを取り扱うときのご参考になれば幸いです。

よろしければいいね!やフォローをいただけますと嬉しいです。書き続けていく励みになります。
最後までお読みいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?