Python pandas RFM模型应用实例详解

  • Post category:Python

Python pandas RFM 模型应用实例详解

1. 前言

RFM 模型是一种用于客户价值分析的方法,采用的指标为客户的最近一次购买时间(R)、购买频率(F)以及购买金额(M),RFM 模型可以将客户分成多个群体,以便企业更好地了解每个群体的客户价值及特征,并因此有针对性地制定营销策略。

本文介绍了 Python pandas 实现 RFM 模型的详细过程及示例,以供读者学习参考。

2. 数据准备

在实现 RFM 模型前,需要准备相关数据。本文使用的样本数据为一家电商的订单数据,数据文件为 orders.csv,包含了订单号、下单时间、订单金额等信息。读取数据后,可以使用 pandas 的常用方法进行数据探索,如数据描述、数据可视化等。

代码示例:

import pandas as pd

# 读取数据
orders = pd.read_csv('orders.csv')
# 数据描述
print(orders.describe())
# 数据可视化
orders.plot(kind='scatter', x='order_date', y='order_amount')

3. 数据处理

在进行 RFM 模型的计算前,需要对数据进行处理。首先需要将订单数据按用户 ID 进行聚合,得到每个用户的下单时间、订单数量和订单总金额等信息。然后,需要将下单时间转换为相对时间(即从最后一次下单时间算起),以便计算 R 值。

代码示例:

# 按用户 ID 进行聚合
user_orders = orders.groupby('user_id').agg({
    'order_date': lambda x: x.max(),
    'order_amount': 'sum',
    'order_id': 'count'
})
user_orders.rename(columns={
    'order_date': 'recent_order_date', 
    'order_amount': 'monetary_value',
    'order_id': 'frequency'
}, inplace=True)

# 计算 R 值
max_date = user_orders['recent_order_date'].max()
user_orders['recency'] = (max_date - user_orders['recent_order_date']).dt.days

4. 计算 RFM 值

计算完 R 值后,即可开始计算 F 值和 M 值。在 F 值和 M 值的计算中,需要对数据进行分组,将用户分为不同的层级。本文使用的分组方法为等距分组,即将数据按大小均匀地划分为 n 份(本文中 n=4),每份即为一层级,越大的层级表示客户价值越高。

代码示例:

# 计算 F 值和 M 值
user_orders['frequency_score'] = pd.cut(user_orders['frequency'], bins=4, labels=[1, 2, 3, 4]).astype(int)
user_orders['monetary_score'] = pd.cut(user_orders['monetary_value'], bins=4, labels=[1, 2, 3, 4]).astype(int)

# 计算 RFM 值
user_orders['RFM'] = user_orders['recency'].map(str) + user_orders['frequency_score'].map(str) + user_orders['monetary_score'].map(str)

5. 分析 RFM 群体

计算完 RFM 值后,即可将客户分成不同的分类,进而分析每个分类的客户特征及价值。本文使用的分组方法为等距分组,将客户按 RFM 值均匀地划分为 n 份(本文中 n=7),每份即为一群体,该群体表示了某种客户特征以及价值。

代码示例:

# 分组分析
user_orders['RFM_group'] = pd.qcut(user_orders['RFM'].astype(int), q=7, labels=['A', 'B', 'C', 'D', 'E', 'F', 'G'])
grouped = user_orders.groupby('RFM_group').agg({
    'recency': 'mean',
    'frequency': 'mean',
    'monetary_value': 'mean',
    'RFM': 'count'
})
print(grouped)

6. 总结

RFM 模型是一种较为简单有效的客户价值分析方法,能够为企业带来客户洞察和价值挖掘。在实现 RFM 模型时,需要注意数据的处理及计算方法,并结合实际业务场景进行策略制定。