はじめに
マーケティング寄りのデータ分析の知識を補うため、以下の本で勉強を始めた。事例ベースな内容で、とても読みやすい。 Pandasも習得したいので、Pandasに翻訳しながら読み進めている。今回は第4章を勉強した。
- 作者: 酒巻隆治,里洋平
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2014/06/25
- メディア: 単行本
- この商品を含むブログ (1件) を見る
ちなみに、CSVファイルなどのデータは、本のサポートページ(SBクリエイティブ:ビジネス活用事例で学ぶ データサイエンス入門)で配布されている。
翻訳したコード
第4章では、クロス集計を扱っている。作業はJupyter Notebook上で行った。Pandasなコードは以下のとおり。
%matplotlib inline # Jupyter Notebookでmatplotlibの図が表示されないときにつけるおまじない import matplotlib.pyplot as plt import pandas as pd import numpy as np # データを読み込む。 dau = pd.read_csv('section4-dau.csv') user_info = pd.read_csv('section4-user_info.csv') # user_idとapp_nameが同じものをくっつける。 dau_user_info = pd.merge(dau, user_info, on=['user_id', 'app_name']) # 月次で集計するため、日付を月までにする。 dau_user_info['log_month'] = dau_user_info['log_date'].str.slice(0, 7) # 性別で集計する。 dau_user_info.pivot_table(index='log_month',columns='gender', values='user_id', aggfunc='count')
gender | F | M |
---|---|---|
log_month | ||
2013-08 | 47343 | 46842 |
2013-09 | 38027 | 38148 |
# 年代で集計する(表は省略)。 dau_user_info.pivot_table(index='log_month',columns='generation', values='user_id', aggfunc='count') # 性別と年代で集計する(表は省略)。 dau_user_info.pivot_table(index='log_month',columns=['gender', 'generation'], values='user_id', aggfunc='count') # デバイスで集計する(表は省略)。 dau_user_info.pivot_table(index='log_month',columns='device_type', values='user_id', aggfunc='count') # 集計結果を可視化する。 dau_user_info.groupby(['log_date', 'device_type'])['app_name'].count().groupby('device_type').plot(legend=True,rot=45)
デバイスでわけて、日付ごとのユーザー数を集計し、可視化したものが以下のとおり。 本と同様に、9月になってから、Androidユーザーが少なくなっている。
おわりに
pivot_tableで多重なクロス集計もできるので便利。今回も手こずったのは、plotの部分で、x軸のラベルを日付だけにしたかったけど諦め。細かいことは、matplotlib使えば良いんだろうけど、勉強中なので、しばらくはPandasのplotにこだわりたい。