计算 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 指标

# Aggregate data on a customer level
datamart = online.groupby(['CustomerID']).agg({
    'InvoiceDate': lambda x: (snapshot_date - x.max()).days,
    'InvoiceNo': 'count',
    'TotalSum': 'sum'})

# Rename columns for easier interpretation datamart.rename(columns = {'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'TotalSum': 'MonetaryValue'}, inplace=True)
# Check the first rows datamart.head()
Python 中的客户细分

最终 RFM 值

用于 RFM 分群的表已完成!

RFM 前5行

Python 中的客户细分

让我们来计算 RFM 值!

Python 中的客户细分

Preparing Video For Download...