加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

不到70行Python代码,轻松玩转RFM用户分析模型

发布时间:2019-10-28 15:48:40 所属栏目:教程 来源:一枚程序媛呀
导读:本文从RFM模型概念入手,结合实际案例,详解Python实现模型的每一步操作,并提供案例同款源数据,以供同学们知行合一。 注:想直接下载代码和数据的同学可以空降文末 看这篇文章前源数据长这样: 学完后只要敲一个回车,源数据就变成了这样: 是不是心动了
副标题[/!--empirenews.page--]

本文从RFM模型概念入手,结合实际案例,详解Python实现模型的每一步操作,并提供案例同款源数据,以供同学们知行合一。

注:想直接下载代码和数据的同学可以空降文末

看这篇文章前源数据长这样:

不到70行Python代码,轻松玩转RFM用户分析模型

学完后只要敲一个回车,源数据就变成了这样:

不到70行Python代码,轻松玩转RFM用户分析模型

是不是心动了?OK,闲话少叙,我们来开动正餐!

RFM,是一种经典到头皮发麻的用户分类、价值分析模型,同时,这个模型以直白著称,直白到把需要的字段写在了脸上,让我们再念一遍:“R!F!M!”:

  • R,Rencency,即每个客户有多少天没回购了,可以理解为最近一次购买到现在隔了多少天。
  • F,Frequency,是每个客户购买了多少次。
  • M,Monetary,代表每个客户平均购买金额,这里也可以是累计购买金额。

这三个维度,是RFM模型的精髓所在,帮助我们把混杂一体的客户数据分成标准的8类,然后根据每一类用户人数占比、金额贡献等不同的特征,进行人、货、场三重匹配的精细化运营。

用Python建立RFM模型,整体建模思路分为五步,一言蔽之——“五步在手,模型你有”,分别是数据概览、数据清洗、维度打分、分值计算和客户分层。

01 数据概览

我们的源数据是订单表,记录着用户交易相关的字段:

不到70行Python代码,轻松玩转RFM用户分析模型

有个细节需要注意,订单每一行代表着单个用户的单次购买行为,什么意思呢?如果一个用户在一天内购买了4次,订单表对应记录着4行,而在实际的业务场景中,一个用户在一天内的多次消费行为,应该从整体上看作一次。

比如,我今天10点在必胜客天猫店买了个披萨兑换券,11点又下单了饮料兑换券,18点看到优惠又买了两个冰淇淋兑换券。这一天内虽然我下单了3次,但最终这些兑换券我会一次消费掉,应该只算做一次完整的消费行为,这个逻辑会指导后面F值的计算。

我们发现在订单状态中,除了交易成功的,还有用户退款导致交易关闭的,那还包括其他状态吗?Let me see see:

不到70行Python代码,轻松玩转RFM用户分析模型

只有这两种状态,其中退款订单对于我们模型价值不大,需要在后续清洗中剔除。

接着再观察数据的类型和缺失情况:

不到70行Python代码,轻松玩转RFM用户分析模型

订单一共28833行,没有任何缺失值,Nice!类型方面,付款日期是时间格式,实付金额、邮费和购买数量是数值型,其他均为字符串类型。

02 数据清洗

剔除退款

在观察阶段,我们明确了第一个清洗的目标,就是剔除退款数据:

不到70行Python代码,轻松玩转RFM用户分析模型

关键字段提取

剔除之后,觉得我们订单的字段还是有点多,而RFM模型只需要买家昵称,付款时间和实付金额这3个关键字段,所以提取之:

不到70行Python代码,轻松玩转RFM用户分析模型

关键字段构造

上面的基础清洗告一段落,这一步关键在于构建模型所需的三个字段:R(最近一次购买距今多少天),F(购买了多少次)以及M(平均或者累计购买金额)。

首先是R值,即每个用户最后一次购买时间距今多少天。如果用户只下单过一次,用现在的日期减去付款日期即可;若是用户多次下单,需先筛选出这个用户最后一次付款的时间,再用今天减去它。

需要提醒的是,时间洪流越滚越凶,对应在时间格式中,就是距离今天越近,时间也就越“大”,举个例子,2019年9月9日是要大于2019年9月1日的:

不到70行Python代码,轻松玩转RFM用户分析模型

因此,要拿到所有用户最近一次付款时间,只需要按买家昵称分组,再选取付款日期的最大值即可:

不到70行Python代码,轻松玩转RFM用户分析模型

为了得到最终的R值,用今天减去每位用户最近一次付款时间,就得到R值了,这份订单是7月1日生成的,所以这里我们把“2019-7-1”当作“今天”:

不到70行Python代码,轻松玩转RFM用户分析模型

接着来搞定F值,即每个用户累计购买频次。

在前面数据概览阶段,我们明确了“把单个用户一天内多次下单行为看作整体一次”的思路,所以,引入一个精确到天的日期标签,依照“买家昵称”和“日期标签”进行分组,把每个用户一天内的多次下单行为合并,再统计购买次数:

不到70行Python代码,轻松玩转RFM用户分析模型

上一步计算出了每个用户购买频次,这里我们只需要得到每个用户总金额,再用总金额除以购买频次,就能拿到用户平均支付金额:

不到70行Python代码,轻松玩转RFM用户分析模型

最后,万剑归宗,三个指标合并:

不到70行Python代码,轻松玩转RFM用户分析模型

至此,我们完成了模型核心指标的计算,算是打扫干净了屋子再请客。

03 维度打分

维度确认的核心是分值确定,按照设定的标准,我们给每个消费者的R/F/M值打分,分值的大小取决于我们的偏好,即我们越喜欢的行为,打的分数就越高:

以R值为例,R代表了用户有多少天没来下单,这个值越大,用户流失的可能性越大,我们当然不希望用户流失,所以R越大,分值越小。

F值代表了用户购买频次,M值则是用户平均支付金额,这两个指标是越大越好,即数值越大,得分越高。

(编辑:新余站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读