RFM是典型的用户分层方法,是评估用户消费能力、衡量用户贡献价值的重要工具。RFM代表的是最近一次消费时间间隔(Recency)、消费频率(Frequency)和消费金额(Monetary)。本案例将利用Pandas建立用户消费RFM模型,实现精细化运营。
首先构造数据,并进行数据类型转换:
import pandas as pd
import faker
f=faker.Faker('zh-cn')
df=pd.DataFrame({'用户':[f.name() for i in range(20000)],
'购买日期':[f.date_between(start_date='-1y',end_date='today') for i in range(20000)],
'金额':[f.random_int(10,100) for i in range(20000)]})
df
'''
用户 购买日期 金额
0 邓涛 2022-05-11 31
1 周丽华 2023-03-22 28
2 董琴 2022-12-04 64
3 李娟 2022-05-26 100
4 王伟 2022-12-27 95
... ... ... ...
19995 李红梅 2022-05-03 56
19996 花俊 2022-07-09 74
19997 吴琳 2023-03-19 20
19998 陈磊 2022-07-24 14
19999 余淑华 2022-10-30 33
20000 rows × 3 columns
'''
df=df.astype({'购买日期':'datetime64[ns]'})
df.dtypes
'''
用户 object
购买日期 datetime64[ns]
金额 int64
dtype: object
'''
以上构造了两万条用户消费记录,有用户名、购买时间和金额,且交易时间在近一年内,交易金额在10~100元之间。
首先来计算R值。R为最后一次购买时间距今天的天数,R值越大代表用户越有可能处于沉睡状态,流失风险越大:
r=(
df.groupby('用户')
.apply(lambda x:(pd.Timestamp('today')-x['购买日期'].max()))
.dt
.days
)
r
'''
用户
丁丹 151
丁丹丹 235
丁丽丽 21
丁丽娟 192
丁健 9
...
龚红梅