計算 RFM 指標

Python 的客群分群

Karolis Urbonas

Head of Data Science, Amazon

定義

  • Recency(距今最近購買)-距離上次交易的天數
  • Frequency(購買頻率)-最近 12 個月的交易次數
  • Monetary Value(金額)-最近 12 個月的總消費
Python 的客群分群

資料集與前處理

  • 與前面課程相同的 online 資料集。
  • 需要先做資料前處理。
  • 新增 TotalSum 欄位 = Quantity × UnitPrice

前 5 列

Python 的客群分群

資料準備步驟

我們從已前處理的 online DataFrame 開始,僅包含最近 12 個月的資料:

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)
Python 的客群分群

計算 RFM 指標

# 以客戶層級彙總資料
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()
Python 的客群分群

最終 RFM 值

RFM 分群所需的表格已完成!

RFM 前 5 列

Python 的客群分群

一起來練習吧!計算 RFM 值

Python 的客群分群

Preparing Video For Download...