当前位置:首页>python>Python-27-RFM模型

Python-27-RFM模型

  • 2026-10-11 07:17:52
Python-27-RFM模型
RFM是根据已有的历史消费行为,通过分析给用户进行分类,识别不同价值的客户,然后做精细化营销,提高客户的复购行为。RFM是Recency,Frequency,Monetary三个单词的缩写。
指标
意思
直观判断
Recency
-最近消费间隔
最近一次的消费时间
R越小=越好,
表示越容易复购
Frequency
-消费频次
统计周期内,累计购买的次数
F越大=越好,
买的次数,说明忠诚
Monetary
-消费金额
周期内累计实付总金额
M越大=越好
用户贡献大
R、F、M分别从自己的维度对客户进行分类,然后组合起来,就是这个用户的“标签”。
我们把R、F、M各自以均值为分界线,拆成2档,高于均值的为1,低于均值的为0,这样可以组合成8类人群。当日还是有5分值,以各20%为1分的差,前20%为5分,最后20%为1分,这样就会有5x5x5=125个组合。拆成5份的这种一般用于头部的大企业(商超、美妆、电商等),是精细化分层。拆成2分制的这样,业务比较简单通用,常用这种。

作为分析人员,我们需要知道3个基本信息:用户的唯一编号,下单时间、下单金额。(这里进行细分,一种是整个店的,按用户+店铺,整店汇总;另一种更细的分法是对某个店铺内的品类单独做一份分析。前一种是日常用的标准RFM)
用python操作逻辑
#确定分析数据的截至日期dead_day=pd.to_datetime('2026-06-06')#计算R、F、M的数值,使用分组聚合rmf=df.groupby('userid').agg(  R=('orderdate',lambda x:(dead_day-x.max()).days),  F=('orderid','count'),  M=('amount','sum')  ).reset_index()#求R、F、M三列的均值,用查询与均值比较,分成高为1,低位0两类R_med=rmf['R'].median()rfm['R_value']=np.where(rmf['R']<=R_med,1,0)#将分层标签3个维度拼接起来rfm['rfm_label']   =rfm['R_value'].astype(str)    +rfm['F_value'].astype(str)    +rfm['M_value'].astype(str)#将三位数的数字映射成客户类型rfm['customer_type']=rfm['rfm_label'].map({  '111':'重要价值客户', #金主  '011':'重要保持客户', #唤回来,大额优惠券  '001':'重要挽留客户', #沉睡了,大额优惠吸引  '101':'重要发展客户', #促复购(优惠劵)  '110':'一般价值客户',#提高消费额,满减券  '100':'一般发展客户',#小额无门槛券  '010':'一般保持客户',#通用小券  '000':'流失客户' #算了吧,随缘}) #分别为最后一次购买日期、买的次数,消费的金额。#只要是消费高的都是重要客户
RFM适合对那些需要重复消费、靠复购、老客户赚钱的行业。比如线下的零售、电商、餐饮。通过分析,精准提供优惠活动。
RFM不适用那些只“买一次”的行业,如房子、汽车类,因为没有复购。
RFM忽略了商品品类,RFM同样可能的分数,有人买奶粉(高忠诚、刚需),有人买毛巾(低忠诚、随便购买),它们的价值完全不同。

总结:
    RFM模型适合拥有高频复购、用户生命周期较长的行业,用来做客户价值分层、精准营销。快消品行业适合(高频、复购强、周期短),而房地产完全不适合(低频,一生一次,无复购)。且RFM模型,只看行为,无法解释客户流失的原因。

Day 27
#Python #RFM模型 
如果手中与风筝的线断了,那就乘着现在目送一下。

最新文章

随机文章