はじめに
マーケティング寄りのデータ分析の知識を補うため、勉強を開始した。「チュートリアル的な事例ベースの教材がないかな〜」と色々と探していたところ、ぴったりの良い本が見つかった。第1章と第2章には、データ分析がどういう仕事か書かれている。事例は第3章からとなる。
- 作者: 酒巻隆治,里洋平
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2014/06/25
- メディア: 単行本
- この商品を含むブログ (1件) を見る
この本のみならず、多くの(マーケティング寄りの)データ分析の本では、R言語が使われている。PythonのPandasも習得したかったので、Pandasで翻訳しながら読み進めることにした。ちなみに、CSVファイルなどのデータは、本のサポートページ(SBクリエイティブ:ビジネス活用事例で学ぶ データサイエンス入門)で配布されている。
翻訳したコード
第3章では、売上を可視化・比較するため、ヒストグラムを作成する。作業は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('section3-dau.csv') dpu = pd.read_csv('section3-dpu.csv') install = pd.read_csv('section3-install.csv') # DAUデータとInstallデータで、user_idとapp_nameが同じものをくっつける。 dau_install = pd.merge(dau, install, on=['user_id', 'app_name']) # さらにDPUデータをくっつける。 dau_install_payment = pd.merge(dau_install, dpu, on=['log_date', 'app_name', 'user_id'], how='outer') # 未課金ユーザの課金額をNAから0とする。 dau_install_payment = dau_install_payment.fillna(0) # 月次で集計するため、日付を月までにする。 dau_install_payment['log_month'] = dau_install_payment['log_date'].str.slice(0, 7) dau_install_payment['install_month'] = dau_install_payment['install_date'].str.slice(0, 7) # 利用月・利用開始月・ユーザーIDでまとめる。 mau_payment = dau_install_payment.groupby(['log_month', 'user_id', 'install_month']).sum().reset_index() # 利用月と利用開始月を確認することで、新規ユーザーか既存ユーザーかを判定する。 mau_payment['user_type'] = np.where(mau_payment['install_month']==mau_payment['log_month'], 'install', 'existing') # 課金額を集計して可視化する。 mau_payment_summery = mau_payment.groupby(['log_month', 'user_type']).sum().reset_index() mau_payment_summery.pivot('log_month', 'user_type').plot.bar(y='payment', stacked=True)
可視化した先月と今月の売上状況は以下のとおり。本では、この後、新規ユーザーの売上比較も行うが、今回は省略。
おわりに
Numpy/Scipy脳の私には、Pandasは、ちょっととっつきにくい。一番手こずったのは、plotの部分で、なかなか思ったような図が出せなかった。このへんは「慣れ」な気もしなくもない。逆にR言語に慣れてる人は、関数名の違いさえ把握してしまえば、Pandasを使いこなすのは余裕なのでは?