RFM 値を計算する
これまでに使ってきた online データセットについて、Recency・Frequency・Monetary の値を計算します。直近12か月分のデータが読み込まれています。online には Quantity と UnitPrice の積で計算した TotalSum 列があります(online['Quantity'] * online['UnitPrice'])。
また、Recency の計算に使える snapshot_date 変数も用意しています。必要に応じて、online データセットや snapshot_date をコンソールに出力して確認してください。pandas ライブラリは pd、datetime は dt として読み込まれています。
この演習はコースの一部です
Pythonで学ぶカスタマーセグメンテーション
演習の手順
- 各顧客について、Recency、Frequency、Monetary の順に値を計算します。
- Recency は、
snapshot_dateの値からInvoiceDateのmaxとの差分を計算します。 - 列名をそれぞれ Recency、Frequency、MonetaryValue にリネームします。
datamartの先頭5行をヘッダー付きで表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Calculate Recency, Frequency and Monetary value for each customer
datamart = online.groupby(['CustomerID']).agg({
'InvoiceDate': lambda x: (snapshot_date - x.____()).days,
'InvoiceNo': '____',
'TotalSum': '____'})
# Rename the columns
datamart.rename(columns={'InvoiceDate': '____',
'InvoiceNo': '____',
'TotalSum': '____'}, inplace=True)
# Print top 5 rows
print(____.head())