mzumi's blog

Pythonを使ったデータ分析 (1)

March 07, 2015

以前、データ分析でRを使おうとし、Rを勉強してみたがどうもなじめずにいた。
そんなことを思っている内に、Pythonはデータ分析のツールがそろっていることを聞いたので、使ってみることにした。

しかし、ただ単純にAPIとかを覚えても面白くないので、どうしようかと思っていたところ、
ビジネス活用事例で学ぶデータサイエンス入門とい本があるのを思い出し、
この本はRを使って分析しているのだが、これをPythonを使ってみようと思った。

誌面で使用されているデータは、公開されているので、それをダウンロードして使用する。

また、Pythonに関しては、初心者なので、色々と怪しいコードがあるかも。


3章 売り上げ分析

1,2章はデータ分析についての説明をしていて、実際のデータ分析は3章から始まる。
で、3章だが、DAU、DPU、いつインストールしたかのCSVがあり、それらを使用して
売り上げの減少の原因を調べている。

まず、DAU, DPU, インストール情報が記述されている、3つのCSVファイルを読み込む。

CSVファイルを読み込む際、 parse_datesでカラムを指定し、データをdatetimeとして読み込む。
parse_dates=True と指定すると全ての列で日付として読み込もうとするらしい。

次に、この3つのデータを結合させる。

まず、DAUとインストール情報のCSVは、app_nameuse_id のカラムを結合する条件とし、
結合させた。

onを使って明示的に結合するカラムを指定しているが、指定しない場合、同じカラム名をキーとし、
結合するようだ。今回は明示的に指定してみた。

課金情報については、ログインしても、お金を支払わなかった場合があるため、外部結合を行う。
外部結合を行う際は、how を使用する。

how のオプションは

が存在し、outer は left join と right join を適用させた動作になるようだ。
今回は、leftを指定し、左外部結合を行う。

その際、paymentの行に欠損データが発生するので、fillna(0) を使用し、
欠損データには0を代入するようにした。

ここで、作成したデータの上位5件を user_info[:5] のコマンドで
表示すると以下の結果になる。

|   |  log_date  | app_name | user_id | install_date | payment |
|---|------------|----------|---------|--------------|---------|
| 0 | 2013-06-01 | game-01  |   116   |  2013-04-17  |    0    |
| 1 | 2013-06-02 | game-01  |   116   |  2013-04-17  |    0    |
| 2 | 2013-06-03 | game-01  |   116   |  2013-04-17  |    0    |
| 3 | 2013-06-04 | game-01  |   116   |  2013-04-17  |    0    |
| 4 | 2013-06-05 | game-01  |   116   |  2013-04-17  |    0    |

とりあえず、今日はここまで。