基于python实现RFM分析

作者: 桃子镇 | 来源:发表于2020-03-25 13:30 被阅读0次

CREATED BY TAO


一 .先了解一下什么是RFM分析,RFM分析是根据客户活跃程度和交易金额贡献,进行客户价值细分的一种客户细分方法。

RFM由R(Recency)进度,F(Frequency)频度,M(Monetary)额度组成。

R表示客户最近一次交易时间的间隔。R值越大,表示客户交易发生的日期越久。R值越小,表示客户交易发生的日期越近。

R表示客户在最近一段时间内交易的次数。F值越大,表示客户交易越频繁。F值越小,表示客户越不活跃。

M表示客户在最近一段时间内交易的金额。M值越大,表示客户价值越高。M值越小,表示客户价值越低。

这样不同分类组合,就形成了八种客户类型

RFM的八种客户类型

RFM的分析过程

FRM=100*R_S+10*F_S+1*M_S



.接下来就是基于python来进行RFM分析

将csv数据导入python 查看数据框维度和数据框内的数据类型 一共有5列数据,每列有76050行 数据虽然有5列,5个字段,但真正参与分析的只有4个字段USERID、ORDERDATE、ORDERID、AMOUNTINFO

USERID列为客户ID、ORDERDATE列为时间列、OEDERTD列为订单ID、AMOUNTINFO列为金额列

可以看出有缺失值的列为ORDERDATE列和AMOUNTINFO列

第一步:进行数据清洗

查看AMOUNTINFO列中的最大值为30999 查看AMOUNTINFO列中的最大值为为0.5

(1)删除所有空值的行

删除所有为空值的行,并把数据添加到dt数据框中

(2)筛选AMOUNTINFO列的数据,因为金额的最小值为0.5,数值<1,因此要提取出AMOUNTINFO列中>1的数据进行分析

将数据提取出来后依然放入dt数据框,按照金额大小降序排列 查看dt数据框的维度和数据类型 删除和提取数据之后 dt数据框一共有5列数据,每列有75240行

(3)处理时间列的数据类型

已知时间列ORDERDATE的数据类型为Object、字符型 将ORDERDATE列处理为日期数据类型 查看ORDERDATE列的数据类型 为'<M8[ns]' 如上图

第二步:进行数据分析

(4)求日期到现在的距离

求日期到现在的距离,并把结果数据放入datediff列中 如上图

(5)从时间距离中获得天数

从时间距离中获得天数 如上图

(6)统计每个用户距离现在多久没有消费了,找到最小的最近消费距离

找出最近消费距离数据放入r_agg数据框中 查看r_agg列的数据维度,一共有2列,每列55143行

(7)统计每个用户交易的总次数,即对订单数计数

找出交易次数数据放入f_agg数据框中   查看f_agg列的数据维度,一共有2列,每列55143行

(8)统计每个用户交易的总金额,即对每次的交易金额求和

找出交易金额数据放入m_agg数据框中     查看m_agg列的数据维度,一共有2列,每列55143行

(9)使用merge函数把r_agg、f_agg、m_agg三个数据框关联起来

把三个数据框关联起来并放入aggData数据框中 更改aggData数据框的列名

FRM=100*R_S+10*F_S+1*M_S

(10)求R_S的得分 

把得分数据放入r_s数据框中

最近消费距离列(recencyAgg)按照从小到大顺序排列,间隔距离越大也就是recencyAgg列的值越大,得分越小

因此,标签rlabels按照从大到小排列。

(11)求F_S的得分 

把得分数据放入f_s数据框中

消费频次列(requencyAgg)的数据并未呈正态分布,所以未使用quantile函数,而是查看数据的分布情况按照分布情况的从小到大顺序进行排列,消费频次越大也就是frequencyAgg列的值越大,得分越大

因此,标签flabels按照从小到大排列。

(12)求M_S的得分

把得分数据放入m_s数据框中

消费金额列(monetaryAgg)按照从小到大的顺序排列,消费金额越大也就是monetaryAgg列的值越大,得分越大

因此,标签mlabels按照从小到大排列。

(13)将r_s、f_s、m_s添加到数据框aggData中

添加到数据框aggData中 查看aggData数据框中各列的数据类型

(14)将r_s、f_s、m_s列数据类型转换成数值型(int),再计算RFM得分

计算RFM得分

(15)为RFM得分添加标签

为RFM得分添加了标签并分成了八类,将数据放入level数据框中 如上图

(16)对客户等级列(level)进行分组,按照客户ID进行计数统计,并把数据放入customerlevels数据框中

将分组后的数据放入customerlevels数据框中 如上图

结论:

RFM模型可以对客户的终生价值做一个合理的预估,基于一个理想的客户特征来衡量现实中客户价值的高低,通过此类分析,定位最有可能成为品牌中式客户的群体,让我们把主要精力放在最有价值的用户身上开展精准营销。

细分出来的客户类型分布情况 各类客户的占比情况

CREATED BY TAO

相关文章

网友评论

    本文标题:基于python实现RFM分析

    本文链接:https://www.haomeiwen.com/subject/cmswyhtx.html