©作者 | leo
管理学中有一个重要概念那就是客户关系管理(CRM),它核心目的就是为了提高企业的核心竞争力,通过提高企业与客户间的交互,优化客户管理方式,从而实现吸引新客户、保留老客户以及将已有客户转化为忠实客户的运营机制。
而这其中最为经典的实现模型那就是RFM模型,它主要通过对每个客户的近期消费时间,购买频率和购买金额来对不同的客户进行价值状态划分。
从而使得我们可以有针对性的对不同用户进行个性化运营和营销。
01 RFM模型核心维度
针对上述3个维度,我们的预期:
最近一次消费的时间(Recency):
该维度指的是最近一次消费时间间隔(R), 也就是上一次消费的时间间隔,该值越小客户价值越高,这是因为消费间隔越近的客户越有可能产生二次消费。
某段时间内消费频率次数(Frequency):
消费频次(F)体现了客户的购买频率,那么购买频次越高,越能体现用户的消费活跃程度,因此,客户价值也就越高。
某段时间消费的总金额(Monetary):
消费金额(M)这个从字面意思即可知道,用户的消费金额越高,用户的消费能力越强,那么自然用户的价值也就越高。
02 RFM划分用户类型及对应运营策略
03 Excel中实现RFM模型
为了解决现存方法的缺陷,作者首次提出了将MCL、SSL和Excel是实现RFM模型的一个重要且十分直接的工具,只需要灵活使用Excel自带的函数就可以实现数据的汇总计算,得到RFM模型的三个指标值,从而将用户的价值类型提取出来,让我们有针对性的进行业务推广策略。
接下来我们给大家演示一个用Excel实现的RFM模型:
【数据来源】
某淘宝店铺的月份销售数据
【分析目标】
根据现有订单数据,构建店铺用户价值模型,从而为后续的精细化运营不同的客户群体打下基础
【数据预处理】
数据量大概有3989条,可以在excel内处理,也可以使用python对大批量的数据进行处理。
3.1 提取关键词字段:
【买家会员名】、【总金额】、【订单付款时间】、并设置对应的数据类型,我们要在同页面进行RFM值的计算。
3.2 计算Recency, Monetary,Frequency
Recency: 通过对【买家会员名】、【总金额】、【订单付款时间】三列数据做透视表,对订单付款时间求最大值,即最近消费时间,然后与观测时间进行求差运算,可得R值
Monetary:对总金额下的客户不同消费进行平均值运算,即可获得该客户的M值
Frequency:对订单付款时间进行计数运算,就是该客户的消费频次F值
3.3 客户RFM模型建立
计算完客户的R、F、M值后,接下来就可以实现客户RFM模型的评估了。
【简单实现】
此时可以先计算出来R、F、M三个值的平均值,然后对客户的每个维度与该维度的平均值进行比较,如果超出平均值就是高,否则就是低。
然后将三列字段通过’&’连接符链接起来,生成RFM辅助列。
然后通过我们预先准备好的价值模型参考表,生成用户价值模型。
最后通过excel的vlookup函数提取客户类型字段到计算表中,就实现了我们的最终结果。
【计分法】
通过用户的R、F、M值与对应值的极差(最大值与最小值的差),来确定R-Score, F-Score,M-Score。
因此首先计算R、F、M的最大值、最小值、极差三等分距
最大值:通过“=max(B5:B1204)” 计算,(计算F时B换成C,M时B换成D即可)
最小值:通过“=min(B5:B1204)”计算(计算F时B换成C,M时B换成D即可)
极差:通过“=(F1-F2)/3”计算(计算F时F换成G,M时F换成H即可)
R-Score计算方式:在E5单元格输入:
“=IF(ROUNDUP((B5-$F$2)/$F$3,0)=0,1,ROUNDUP((B5-$F$2)/$F$3,0)) ”
F-score和M-score计算方式类似:
“=IF(ROUNDUP((C5-$G$2)/$G$3,0)=0,1,ROUNDUP((C5-$G$2)/$G$3,0))”
“ =IF(ROUNDUP((D5-$H$2)/$H$3,0)=0,1,ROUNDUP((D5-$H$2)/$H$3,0))”
RFM-Score计算采用将R、F、M以百分位、十分位、个位组成三位数的方式实现,共有3*3*3=27种组合方式。
H5单元格的公式:“=E5*100+F5*10+G5”
下拉填充柄应用于整个列表,得到最后结果:
然后对数据表区域A4到H3996进行数据透视:汇总不同的RFM-Score对应的客户群体。
可以采用数据条的方式直观显示客户分布情况。
04 Python实现RFM模型
通过Python处理数据时,我们首先需要关注我们提取进来的数据是否需要预处理,比如数据的类型是否符合预期,字段名是否需要调整,缺失值是否需要填充,重复值是否需要去除等等,因此第一步我们首先需要对数据进行初步的熟悉了解:
4.1 熟悉数据源
常用于初步了解数据的方法有很多比如:shape(了解数据的大小,几行几列),head(显示其中的前几条数据),tail(显示数据源最后几条数据),sample(随机提取几条数据),info(显示数据源的各字段数据类型),describe(对数据源进行数学描述)。
显示结果如下:
通过上图我们发现交易记录里面会有一些无效订单,那么我们首先就要排除这类订单,那么就可以通过pandas的布尔索引来进行数据的筛选:
结果如下:
4.2 选取字段
鉴于我们仅需要买家付款时间,购买日期,实付金额这三个字段,我们仅需要对他们进行数据处理,因此可以排除其他字段。
结果如下:
缺失值处理:
4.3 RFM建模:
A. 计算R值
添加天数字段,将付款时间与观察日期进行日期计算得到R值
运行结果如下:
B. 计算R、F、M值
通过聚合函数,对买家昵称进行计数运算获得消费频次F值,计算天数字段的最小值获得客户的R值,通过实付金额的求和运算获得客户的M值。
运行结果如下:
C. 用户价值评分
通过上述计算,我们可以根据不同的分数段来对客户R、F、M值进行打分,就本案例来讲:
R值:我们得出的最小值是660,以30天作为间隔,660-690天,打5分;690-720,打4分;720-750打3分;750-780打2分;>780,打1分。
F值:我们得出的最小值是1次,以1次作为时间间隔,0-2,打1分;2-3,打2分;3-4,打3分;4-5,打4分;>5,打5分。
M指:我们得出的最小值是0.005元,我们以500元作为时间间隔,0-50,打1分;50-100,打2分;100-150,打3分;150-200,打4分;>200,打5分。
依据上述标准建立程序方法:
运行结果:
D. 用户标签设定:
第一步:计算用户R、F、M平均值:
运行结果
第二步:验证用户各项指标是否超出平均值,是则计一分,否则不计分。
运行结果如下:
第三步:生成用户标签列:
运行结果如下:
E. 可视化呈现:
柱状图:
运行结果如下:
通过以上数据分析工具的分析,我们可以发现在实现RFM模型的方法中,Python具有更为强大的可用性和灵活性,且拥有完备的数据分析手段,从数据预处理、分析到最后的数据呈现。
而Excel在实际工作中应用场景也是非常多见的,通过本案例可以很好的实践Excel相关函数,希望本文对你的数据分析之旅有所帮助。