我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python怎么实现RFM用户分析模型

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python怎么实现RFM用户分析模型

本篇内容介绍了“Python怎么实现RFM用户分析模型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

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

Python怎么实现RFM用户分析模型

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

Python怎么实现RFM用户分析模型

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

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

  • R,Rencency,即每个客户有多少天没回购了,可以理解为最近一次购买到现在隔了多少天。

  • F,Frequency,是每个客户购买了多少次。

  • M,Monetary,代表每个客户平均购买金额,这里也可以是累计购买金额。

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

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

01 数据概览

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

Python怎么实现RFM用户分析模型

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

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

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

Python怎么实现RFM用户分析模型

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

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

Python怎么实现RFM用户分析模型

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

02 数据清洗

剔除退款

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

Python怎么实现RFM用户分析模型

关键字段提取

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

Python怎么实现RFM用户分析模型

关键字段构造

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

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

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

Python怎么实现RFM用户分析模型

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

Python怎么实现RFM用户分析模型

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

Python怎么实现RFM用户分析模型

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

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

Python怎么实现RFM用户分析模型

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

Python怎么实现RFM用户分析模型

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

Python怎么实现RFM用户分析模型

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

03 维度打分

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

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

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

RFM模型中打分一般采取5分制,有两种比较常见的方式,一种是按照数据的分位数来打分,另一种是依据数据和业务的理解,进行分值的划分。这里希望同学们加深对数据的理解,进行自己的分值设置,所以讲述过程中使用的是第二种,即提前制定好不同数值对应的分值。

R值根据行业经验,设置为30天一个跨度,区间左闭右开:

Python怎么实现RFM用户分析模型

F值和购买频次挂钩,每多一次购买,分值就多加一分:

Python怎么实现RFM用户分析模型

我们可以先对M值做个简单的区间统计,然后分组,这里我们按照50元的一个区间来进行划分:

Python怎么实现RFM用户分析模型

这一步我们确定了一个打分框架,每一位用户的每个指标,都有了与之对应的分值。

04 分值计算

分值的划分逻辑已经确定,看着好像有点麻烦。下面我们有请潘大师(Pandas)登场,且看他如何三拳两脚就搞定这麻烦的分组逻辑,先拿R值打个样:

Python怎么实现RFM用户分析模型

沧海横流,方显潘大师本色,短短一行代码就搞定了5个层级的打分。Pandas的cut函数,我们复习一下:

  • 第一个参数传入要切分的数据列。

  • bins参数代表我们按照什么区间进行分组,上面我们已经确定了R值按照30天的间隔进行分组,输入[0,30,60,90,120,1000000]即可,最后一个数值设置非常大,是为了给分组一个容错空间,允许出现极端大的值。

  • right表示了右侧区间是开还是闭,即包不包括右边的数值,如果设置成False,就代表[0,30),包含左侧的分组数据而不含右侧,若设置为True,则是[0,30],首尾都包含。

  • labels和bins切分的数组前后呼应,什么意思呢?bins设置了6个数值,共切分了5个分组,labels则分别给每个分组打标签,0-30是5分,30-60是4分,依此类推。

接着,F和M值就十分容易了,按照我们设置的值切分就好:

Python怎么实现RFM用户分析模型

第一轮打分已经完成,下面进入第二轮打分环节。

客官不要紧脏,面试都还不止两轮呢,伦家RFM模型哪有那么随便的。

现在R-SCORE、F-SCORE、M-SCORE在1-5几个数之间,如果把3个值进行组合,像111,112,113...这样可以组合出125种结果,过多的分类和不分类本质是一样的。所以,我们通过判断每个客户的R、F、M值是否大于平均值,来简化分类结果。

因为每个客户和平均值对比后的R、F、M,只有0和1(0表示小于平均值,1表示大于平均值)两种结果,整体组合下来共有8个分组,是比较合理的一个情况。我们来判断用户的每个分值是否大于平均值:

Python怎么实现RFM用户分析模型

Python中判断后返回的结果是True和False,对应着数值1和0,只要把这个布尔结果乘上1,True就变成了1,False变成了0,处理之后更加易读。

05 客户分层

回顾一下前几步操作,清洗完之后我们确定了打分逻辑,然后分别计算每个用户的R、F、M分值(SCORE),随后,用分值和对应的平均值进行对比,得到了是否大于均值的三列结果。至此,建模所需的所有数据已经准备就绪,剩下的就是客户分层了。

RFM经典的分层会按照R/F/M每一项指标是否高于平均值,把用户划分为8类,我们总结了一下,具体像下面表格这样:

Python怎么实现RFM用户分析模型

由于传统的分类,部分名称有些拧巴,像大多数分类前都冠以“重要”,“潜力”和“深耕”到底有什么区别?“唤回”和“挽回”有什么不一样?

本着清晰至上原则,我们对原来的名称做了适当的改进。强调了潜力是针对消费(平均支付金额),深耕是为了提升消费频次,以及重要唤回客户其实和重要价值客户非常相似,只是最近没有回购了而已,应该做流失预警等等。这里只是抛砖引玉,提供一个思路,总之,一切都是为了更易理解。

对于每一类客户的特征,我们也做了简单的诠释,比如重要价值客户,就是最近购买我们的产品,且在整个消费生命周期中购买频次较高,平均每次支付金额也高。其他的分类也是一样逻辑,可以结合诠释来强化理解。下面,我们就用Python来实现这一分类。

先引入一个人群数值的辅助列,把之前判断的R\F\M是否大于均值的三个值给串联起来:

Python怎么实现RFM用户分析模型

人群数值是数值类型,所以位于前面的0就自动略过,比如1代表着“001”的高消费唤回客户人群,10对应着“010”的一般客户。

为了得到最终人群标签,再定义一个判断函数,通过判断人群数值的值,来返回对应的分类标签:

Python怎么实现RFM用户分析模型

最后把标签分类函数应用到人群数值列:

Python怎么实现RFM用户分析模型

客户分类工作的完成,宣告着RFM模型建模的结束,每一位客户都有了属于自己的RFM标签。

RFM模型结果分析

其实到上一步,已经走完了整个建模流程,但是呢,一切模型结果最终都要服务于业务,所以,最后我们基于现有模型结果做一些拓展、探索性分析。

查看各类用户占比情况:

Python怎么实现RFM用户分析模型

探究不同类型客户消费金额贡献占比:

Python怎么实现RFM用户分析模型

结果可视化之(可视化代码留给大家自行尝试):

Python怎么实现RFM用户分析模型

从上面结果,我们可以快速得到一些推断:

  • 客户流失情况严峻,高消费唤回客户、流失客户占比超过50%,怎么样制定针对性唤回策略迫在眉睫。

  • 重要价值客户占比仅2.97%,还有三个客户占比甚至不足2%,我们模型打分可能不够科学,可以进一步调整打分区间进行优化。

  • ...

再结合金额进行分析:

  • 高消费唤回客户人数占比28.87%,金额占比上升到了38.11%,这部分客户是消费的中流砥柱,他们为什么流失,应结合订单和购买行为数据进一步展开挖掘。

  • 频次深耕客户金额占比紧随其后,这部分客户的特征是近期有消费、消费频次低、消费金额高,和高消费唤回客户仅有购买时间上的不同,如何避免这部分客户向高消费唤回客户的流转是我们要思考的主要命题。

  • 流失客户人数占比26.28%,金额占比仅12.66%,这部分客户中有多少是褥羊毛用户,有多少是目标用户,对我们引流策略能够进行怎么样的指导和调整?

“Python怎么实现RFM用户分析模型”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python怎么实现RFM用户分析模型

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python怎么实现RFM用户分析模型

本篇内容介绍了“Python怎么实现RFM用户分析模型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!看这篇文章前源数据长这样:学完后只要敲一
2023-06-16

使用Python怎么实现一个ORM模型

本篇文章为大家展示了使用Python怎么实现一个ORM模型,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。元类对于元类,我的理解其实也便较浅,大概是这个意思所有的类都是使用元类来进行创建的,而所有的类
2023-06-15

怎么使用Python描述器实现ORM模型

本文小编为大家详细介绍“怎么使用Python描述器实现ORM模型”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Python描述器实现ORM模型”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。访问或者修改描
2023-06-29

怎么利用Python进行客户分群分析

这篇文章主要讲解了“怎么利用Python进行客户分群分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用Python进行客户分群分析”吧!导入数据和python库import pand
2023-07-05

怎么用Python实现岗位分析报告

本篇内容介绍了“怎么用Python实现岗位分析报告”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、本文目标获取 Ajax 请求,解析 JS
2023-07-05

怎么用python进行客户价值分析

今天就跟大家聊聊有关怎么用python进行客户价值分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一个完整的数据分析项目由如下几个步骤组成:1)数据获取:分为本地文本文件、数据库链
2023-06-02

python用户输入怎么实现

这篇文章主要介绍了python用户输入怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说明1、使用input()使程序暂停运行,等待用户输入文本,Python在获取用户
2023-06-20

Python中怎么实现数据分析

今天就跟大家聊聊有关Python中怎么实现数据分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。为什么选择Python进行数据分析?Python是一门动态的、面向对象的脚本语言,同时
2023-06-20

Python中怎么实现方差分析

这篇文章给大家介绍Python中怎么实现方差分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先,还是先简介一下方差分析。方差分析(Analysis of Variance,ANOVA)又称“变异数分析”或“F检验”
2023-06-16

Python中怎么实现文本分析

这期内容当中小编将会给大家带来有关Python中怎么实现文本分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。任务(Task)人为判断同义词很简单,但用程序来判断就不简单了。小爱想到了两种方式:制作一个同
2023-06-16

Paddle模型性能分析工具Profiler怎么使用

本篇内容介绍了“Paddle模型性能分析工具Profiler怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Paddle模型性能分析P
2023-07-05

python数据预测模型算法怎么实现

要实现一个Python数据预测模型算法,你需要遵循以下步骤:收集数据:首先,你需要收集相关数据,这些数据可以来自于各种来源,如数据库、文件、API等。数据清洗和准备:在运用数据进行预测之前,你需要对数据进行清洗和准备工作。这可能包括删除缺失
python数据预测模型算法怎么实现
2024-02-29

数据分析必会六大实用模型是什么?

对于刚刚接触数据分析的人来说,经常会有这样的困惑和疑问:数据分析究竟难不难?难的话难在哪?为什么有时候作分析不知道从何下手,只能眉毛胡子一把抓?
数据分析必会六大实用模型是什么?
2024-04-23

Python怎么利用re模块实现简易分词

本文小编为大家详细介绍“Python怎么利用re模块实现简易分词”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么利用re模块实现简易分词”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一个简单的to
2023-06-30

如何利用ChatGPT和Python实现用户画像分析功能

如何利用ChatGPT和Python实现用户画像分析功能引言:随着互联网的迅猛发展和普及,人们在网络上留下了大量的个人信息。对于企业来说,了解用户的兴趣和偏好,为其提供个性化的服务,已经成为提高用户黏性和市场竞争力的重要手段之一。本文将介绍
2023-10-27

怎么实现Java模块化系统的分析

这篇文章给大家介绍怎么实现Java模块化系统的分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java 模块化系统自提出以来经历了很长的时间,直到 2014 年晚些时候才最终以 JSR(JSR-376) 定稿,而且这
2023-06-17

怎么在Python中使用pandas实现数据分析

怎么在Python中使用pandas实现数据分析?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、比较运算符和比较方法比较运算符用于判断是否相等和比较大小,Py
2023-06-15

python用户登录程序怎么实现

下面是一个简单的Python用户登录程序的实现示例:```pythondef login():username = input("请输入用户名:")password = input("请输入密码:")if username == "admi
2023-09-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录