打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
「数据分析」 使用Python简单玩玩RFM用户价值模型

大家好,我是Python小叮当。

最近有朋友在问怎么做用户分群,刚好看到有个RFM客户价值模型,就移过来用python简单演示一下,感觉还是有一定的作用的。

>

RFM模型是衡量客户价值和客户创利能力的重要工具和手段。在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到的。该模型通过一个客户的近期购买行为、购买的总体频率以及花了多少钱3项指标来描述该客户的价值状况。

目录:

  • 0. 关于RFM模型

  • 1. 数据预处理

  • 2. 指标打分

  • 3. 计算RFM

  • 4. RFM用户分群

0. 关于RFM模型

根据美国数据库营销研究所Arthur Hughes的研究,客户数据库中有3个神奇的要素,这3个要素构成了数据分析最好的指标。

R:最近一次消费间隔 (Recency),计算用户最近一次消费记录截止当前时间的间隔天数

F:消费频率 (Frequency),计算在统计周期内用户消费记录次数

M:消费金额 (Monetary),计算在统计周期内用户累计消费金额或者是单次平均消费金额

针对RFM,我们可以发现:

  • 如果最近一次消费间隔R越小,就表示用户上次消费至今最近,那么该用户的流失风险越低

  • 如果消费频率F越大,就表示用户在统计周期内消费次数多,那么该用户的忠诚度越高

  • 如果消费金额M越大,就表示用户在统计周期内消费支出的金额多,那么该用户的价值越高

基于以上RFM的值,我们简单的按照大小高低来划分,可以分为8类用户群体。

RFM

为了方便划分,我们可以简单根据RFM各自的均值来判断高低:

  • 高:大于均值

  • 低:不大于均值

从而我们可以很好地区分出8类群体,这8类用户群体的特征如下表所示,我们可以根据自己产品的现状制定出更适合不同用户群体的业务决策,从而提升数据。

群体特征

RFM建模流程

  1. 数据预处理

  2. 指标打分

  3. 计算RFM

  4. RFM客户分群

1. 数据预处理

大家可以私信回复01获取本文案例数据源

读取数据并预览

import pandas as pddf = pd.read_csv(r'C:\Users\logs\数据.csv')df.head()

数据预览

原始数据中,@timestamp是时间、price是价格、uid是用户唯一标识符。

df.info()

info

时间字段类型转化

我们发现时间字段类似并非时间,这里需要进行转化,转化的时候需要注意只获取日期即可,时间部分不需要。

df['@timestamp'] = pd.to_datetime(df['@timestamp']).dt.floor('d')df.head()

时间字段转化结果预览

df.info()

info

2. 指标打分

通过R、F、M的定义计算其值,直接分组聚合计算即可得到F和M的值。

data = df.groupby('uid').agg(                            last_date=('@timestamp','max'), # 计算最近一次消费日期                            F=('@timestamp','count'), # 计算消费次数 F                            M=('price','sum'), # 计算消费总金额(也可选择平均值) M                            ).reset_index()data.head()

FM

计算最近一次消费间隔R

直接利用当前日期减去最近消费日期可得到最近消费间隔

data['R'] = (pd.to_datetime('2021.4.12') - data['last_date']).dt.days

RFM

指标打分

根据上面计算出来的RFM值,我们按照一定的分箱规则进行赋分即可,关于这个打分的规则,大家根据自己产品类型、历史数据或行业经验自行判断即可。

我这边简单做了如下划分:

R打分标准:

分值R区间说明10-7最近7天内有充值行为27~14
314~21
421~28
528~超过28天没有充值行为

F打分标准:

分值F区间说明11周期内充值1次22
33
44
54+周期内充值4次以上

M打分标准:

分值M区间说明1100-周期内充值100元以内2100~200
3200~400
4400~800
5800+周期内充值800元以上

这里,我们直接采用分箱进行操作即可,需要注意的是由于分箱的返回结果类型是Categoricals类型,无法用于后续进行分值算术运算,需要进行类型转化。

# 打分,直接参考统计区间# R-score (7天以内,5分;7-14天,4分;14-21天,3分;21-28天,2分;超过28天,1分)data['R_score'] = pd.cut(data['R'],                         bins=[0,7,14,21,28,10000],                         labels=[5,4,3,2,1]                        ).astype('int')data['F_score'] = pd.cut(data['F'],                         bins=[0,1,2,3,4,10000],                         labels=[1,2,3,4,5]                        ).astype('int')data['M_score'] = pd.cut(data['M'],                         bins=[0,100,200,400,800,1000000],                         labels=[1,2,3,4,5]                        ).astype('int')data.head()

指标打分

3. 计算RFM

我们完成对指标打分之后,按照8类用户群体划分的方式,直接比较各种的平均值即可获得高低分类,用1表示高、0表示低。

data['R_level'] = (data['R_score']>data['R_score'].mean())*1data['F_level'] = (data['F_score']>data['F_score'].mean())*1data['M_level'] = (data['M_score']>data['M_score'].mean())*1data.head()

RFM_level

计算RFM

data['RFM'] = data['R_level'].astype('str').str.cat([data['F_level'].astype('str'),data['M_level'].astype('str')])data.head()

RFM值

4. RFM用户分群

基于8类用户分群规则,这里直接用replace函数方法进行操作

data['RFM'] = data['RFM'].replace(['111','101','011','001','110','100','010','000'],                                  ['重要价值用户','重要发展用户','重要保持用户','重要挽留用户','一般价值用户','一般发展用户','一般保持用户','一般挽留用户'])data.head()

RFM用户分群

计算8类用户群体数量分布

data.groupby('RFM')['uid'].nunique().to_frame('用户数').reset_index()

RFM用户分布

# 类似于excel里柱状图填充色中依据数据点着色import plotly.express as pxdataRFM = data.groupby('RFM')['uid'].nunique().to_frame('用户数').reset_index()fig = px.bar(dataRFM, x='RFM', y='用户数',             color='用户数', # 指定柱状图颜色根据 用户数字段数值大小自动着色             height=600, # 图表高度             text = '用户数',             title= '最近42天付费用户RFM分群人数分布',            )fig.update_traces(    textposition='outside',) fig.show()

用户RFM分群人数分布

以上就是本次全部内容,是不是感觉还蛮简单的

感兴的话,大家可以自己下载数据实际演示一下

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Python实现基于客观事实的RFM模型(CDA持证人分享)
基于RFM和K
八大数据分析模型之——用户分群模型(八)
实用!详解数据分析六大经典模型原理 应用场景,值得收藏
如何搭建会员营销体系?(会员营销二)
一文读懂用户分层
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服