Pythonで学ぶカスタマーセグメンテーション
Karolis Urbonas
Head of Data Science, Amazon
online データセットTotalSum 列 = Quantity × UnitPrice
最新12か月のみを含む前処理済みの online DataFrame から始めます。
print('Min:{}; Max:{}'.format(min(online.InvoiceDate),
max(online.InvoiceDate)))
Min:2010-12-10; Max:2011-12-09
直近の分析を想定し、仮の snapshot_day を作成します。
snapshot_date = max(online.InvoiceDate) + datetime.timedelta(days=1)
# 顧客単位で集計 datamart = online.groupby(['CustomerID']).agg({ 'InvoiceDate': lambda x: (snapshot_date - x.max()).days, 'InvoiceNo': 'count', 'TotalSum': 'sum'})# 解釈しやすいように列名を変更 datamart.rename(columns = {'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'TotalSum': 'MonetaryValue'}, inplace=True)# 先頭行を確認 datamart.head()
RFM セグメンテーション用のテーブルが完成しました。

Pythonで学ぶカスタマーセグメンテーション