始める無料で始める

RFM 値を計算する

これまでに使ってきた online データセットについて、Recency・Frequency・Monetary の値を計算します。直近12か月分のデータが読み込まれています。online には QuantityUnitPrice の積で計算した TotalSum 列があります(online['Quantity'] * online['UnitPrice'])。

また、Recency の計算に使える snapshot_date 変数も用意しています。必要に応じて、online データセットや snapshot_date をコンソールに出力して確認してください。pandas ライブラリは pddatetimedt として読み込まれています。

この演習はコースの一部です

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

コースを見る

演習の手順

  • 各顧客について、Recency、Frequency、Monetary の順に値を計算します。
  • Recency は、snapshot_date の値から InvoiceDatemax との差分を計算します。
  • 列名をそれぞれ 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())
コードを編集して実行