导航:首页 > 编程语言 > pythonrfm

pythonrfm

发布时间:2025-06-11 07:59:44

① 如何在python中实现RFM分析

文件-选项-加载项-转到,勾选数据分析工具,然后在数据选项卡下面使用数据分析里面的相关性分析或者协方差分析就可以了。

② 用户价值分层——基于RFM模型的研究分析

• R(Recency):消费间隔,最近一次距离上次消费的时间间隔
• F(Frequency):消费频次,一段时间(1个月/1年...)内的消费总次数
• M(Monetary):消费金额,一段时间(1个月/1年...)内的消费总金额

      RFM模型是用户价值研究中的经典模型,基于近度(Recency),频度(Frequency)和额度(Monetory)这3个指标对用户进行聚类,找出具有潜在价值的用户, 从而辅助商业决策,提高营销效率。RFM作为一种数据驱动的客户细分技术,可帮助营销人员做出更明智的战略性决策,使营销人员能够快速识别用户并将其细分为同类群体,并针对性制定个性化的营销策略,提高用户的参与度和留存率。
      RFM建模所需要的数据源是相对简单的,只用到了购买记录中的时间和金额这两个字段。我们基于交易数据中用户的最后一次的购买时间,购买的次数以和频率,以及平均/总消费额对每个用户计算了三个维度的标准分。然后我们对于三个维度赋予了不同的权重,再基于加权后的分值应用K-Means进行聚类,根据每种人群三个维度与平均值之间的高低关系,确定哪些是需要保持用户,哪些是需要挽留的用户,哪些是需要发展的用户等。在将这些客户圈出之后,便可以对不同客户群使用不同针对性地营销策略(引导,唤醒等),提高复购率与转化率。值得注意的是,三个维度的权重制定并没有统一的标准,比较通用的方法是用层次分析法(AHP),实际场景结合行业以及具体公司的特点进行因地制宜、因人而异的优化。

RFM因素:
• R值越高,顾客的有效期越近,对商家活动的响应越积极
• F值越高,顾客的消费频次越高,对商家的忠诚度就越高
• M值越高,顾客的消费能力越高,对商家贡献度就越高
• 想要提高复购率和留存率,需要时刻警惕R值

RFM分析:
• 谁是您最有价值的客户?
• 导致客户流失率增多的是哪些客户?
• 谁有潜力成为有价值的客户?
• 你的哪些客户可以保留?
• 您哪些客户最有可能对参与度活动做出响应?
• 谁是你不需要关注的无价值客户?
• 针对哪些客户制定哪种发展、保留、挽回策略?

      通过RFM模型,可以帮助营销人员实现客户细分;衡量客户价值和客户利润创收能力;识别优质客户;指定个性化的沟通和营销服务;为更多的营销决策提供有力支持。

数据导入:使用python的pandas.read_csv导入样本数据。
缺失值校验:因数据为生产真实的交易数据,质量相对较高,缺失值较低。

极值校验:第一份样本数据获取的用户订单实付金额,其中会存在优惠或补差支付,同时因就餐人数不一致,产生的的订单消费也会存在较大的差异,造成极致波动、标准差值较大,因此需对金额进行处理,以人均消费额替代订单支付金额,可去掉10元以下、万元以上的交易订单。

获取RFM值:使用 groupby获取RFM值

获取RFM评分值:数据离散,pandas.cut

实验数据RFM分值占比

说明:F、M分布不均匀,极值差异大,经数据探查知晓该商户开通了企业团餐业务,企业会给员工发放补贴,导致员工呈现较高的消费频次,该类用户的消费行为绝大程度依赖于企业,在实际的RFM模型可踢出此类订单,降低此类人群的分值,其次数据中的M值为客户实付金额,该商户支持预定、会餐、大小桌,同一单的消费群体不同,或可使用人均消费总额作为M值。
RFM数据合并,建立R、F、M数据框:pandas+numpy

计算RFM综合分值:权重法
权重值主要赋值方法可分为主观赋权法、客观赋权法,如下:
主观赋权法:主要由专家经验得到权数,然后对指标进行综合评价。是一种结合性方法,易操作,存在一定主观性。常用方法:层次分析法AHP、权值因子判断表法、德尔菲法、模糊分析法、二项系数法、环比评分法、最小平方法、序关系分析法等。
客观赋权法:依据历史数据研究指标之间的相关关系或指标与评估结果的影响关系来综合评价。这是定量研究,无须考虑决策者主观意愿和业务经验,计算方法较为复杂。常用方法:主成分分析、因子分析、熵值法、变异系数法、均方差法、回归分析法等。
因样本数据分布不均匀,故手动赋权重值,去除部分极值。

结论:以近90天的消费活跃来看,用户消费频次集中在1-6次,呈现出极佳的复购率。可以针对消费一次的人群进行特征分析。比如针对人群的流动性,若流动人群占比较大,可进一步推广特色菜吸引客户,若周边人群占比较高,可基于复购人群的特征进行分析,同时平台可提供该类人群近期消费偏好,供商家参考,制定针对性方案。

      了解RFM定义后,将3个指标作为坐标系的XYZ坐标轴,从空间上切割成8类,作为用户的价值分层,如下图:

用户价值分层说明:

上面我们已经计算得到各个用户的RFM分值,接下来要依据分值进行分类。
定义RFM 的分值等级

使用pyecharts绘制玫瑰图:

结论:商家顾客表现出来的忠诚度较高,但新客获取能力较低。但是单纯看分层占比,并没有实际意义,可以基于价值分层与其他特征关联分析进行精准投放。如下图(网络参考图,本期实验并未涉及其他特征)所示:

      用户画像是基于用户信息与行为衍生出来的特征属性,用户的准入信息是用户的主观特征,是一种既定的事实,通过对用户行为的采集、研究,刻画出单个用户的特征。其意义在于基于某一事物对群里特征进行分类,有效的体现事物的合适人群;同时针对群里特征的偏爱、习惯研究,可以刻画出用户的需求,实现精准化营销。

      用户画像的基础成分来源于用户的准入信息(会员注册时的登记信息),更多的特征数据来源于用户的各类行为,而RFM模型便是基于用户消费行为提炼出来的价值指标。通过对各个价值分层的群体特征研究,可以有效提升获客能力以及针对各类人群实现精准化营销。

      市场和运营往往绞尽脑汁做活动、上新品、蹭热点、做营销,拓渠道,不断开发客户、做回访维系客户感情,除了少数运气好的之外,但大多效果寥寥,这是为何?
      经验丰富的营销人员都知道“了解客户”和“客户细分”的重要性。营销人员不仅要着眼于创造更多的访问量和点击量以提高客户获取,还必须遵循从提高点击率(CTR)转变为提高保留,忠诚度并建立客户关系的新范式。与其将整个客户群作为一个整体进行分析,不如将其划分为同类群体,了解每个群体的特征,并使他们参与相关的活动,而不是仅根据客户年龄或地理位置进行客户细分。而RFM分析是市场营销人员分析客户行为的最流行、最简单、最有效的客户细分方法之一。
针对RFM分层用户制定相应的营销策略:
      • 重要价值客户是您的最佳客户,他们是那些最新购买,最常购买,并且花费最多的消费者。提供VIP服务和个性化服务,奖励这些客户,他们可以成为新产品的早期采用者,并有助于提升您的品牌。
      • 重要发展客户:近期客户,消费金额高,但平均频率不太高,忠诚度不高。提供会员或忠诚度计划或推荐相关产品以实现向上销售并帮助他们成为您的忠实拥护者和高价值客户。
      • 重要保持客户:经常购买、花费巨大,但最近没有购买的客户。向他们发送个性化的重新激活活动以重新连接,并提供续订和有用的产品以鼓励再次购买。
      • 重要挽回客户:曾经光顾,消费金额大,购买频率低,但最近没有光顾的顾客。设计召回策略,通过相关的促销活动或续订带回他们,并进行调查以找出问题所在,避免将其输给竞争对手。
      •一般价值客户:最近购买,消费频次高但消费金额低的客户,需要努力提高其客单价,提供产品优惠以吸引他们。
      • 一般发展客户:最近购买,但消费金额和频次都不高的客户。可提供免费试用以提高客户兴趣,提高其对品牌的满意度。
      • 一般保持客户:很久未购买,消费频次虽高但金额不高的客户。可以提供积分制,各种优惠和打折服务,改变宣传方向和策略与他们重新联系,而采用公平对待方式是最佳。
      • 一般挽留客户:RFM值都很低的客户。针对这类客户可以对其减少营销和服务预算或直接放弃。

      此外,目前的RFM分析中,一般给与M值更高的权重,如果一般挽留客户与一般发展客户占据多数,说明公司的用户结构不是很合理,需要尽快采取措施进行优化。

③ k-means与RFM模型结合进行用户群体划分

在CRM系统中经常要对用户进行划分,以标记不同的标签,进行个性化的营销触达动作。通常的用户群体划分会使用用户的一些属性信息,例如年龄,职业,性别等。但是这些属性基本上都是用户本身的特征属性,并不是和品牌关联产生的属性信息。另外一种常用的用户模型,就是 RFM模型 ,是以用户的实际购买行为数据作为基础,进行用户群体的划分的,在实践中更加具有实际价值。

RFM模型由三个指标组成,分别为:

最近一次消费 (Recency)

消费频率 (Frequency)

消费金额 (Monetary)

可以看到这三个属性都是通过用户的购买行为计算得出的,这些指标基本上代表了用户是否活跃,购买能力,忠诚度等信息。

而我们的目标是通过对每个用户的RFM属性进行计算,将用户群体划分为不同的种类进行区分,以便我们进行分析和精准营销。例如我们可以分析出高价值用户,重点发展用户,流失用户等群体进行针对性营销动作。

本文将使用Python的一些工具包,对用户数据集进行分析处理,例如建立RFM模型,数据标准化,以及使用k-means聚类算法将用户群体进行划分。需要读者具有一些基础的Python和数据统计知识。

首先我们通过一些订单数据分析得到一部分用户的样本数据来:

这里包括了用户的id,总购买笔数,总购买金额以及最后一笔订单时间的信息。我们将文件加载进来,截取一部分后对字段类型进行处理:

为了将其转化为我们要使用的RFM属性,我们需要对last_order_date进行处理,转换为最后一次订单时间到目前的天数。这样我们就获得了RFM的基本属性,分别为last_order_day_from_now(R), total_order_count(F), total_order_price(M)。处理完成后对数据进行可视化观察数据分布:

其散点图为:

我们会发现实际上的数据大部分都聚集在了一起,并且有一些非常离散的极端值数据,这对我们后续进行数据聚类会产生不利影响,所以我们使用log函数对数据进行处理,让其分布的更加均匀:

可以看到现在数据分布的已经比较均匀了,这为我们进行聚类打下一个比较好的基础。但同时我们也会发现RFM这三个属性的单位却并不相同,分别是天数,交易笔数和交易金额。这就造成了其数值差别巨大。而聚类算法一般都是使用不同向量间的距离进行计算划分的,属性单位不同造成的数值差异过大会造成计算距离时的权重分布不均衡,也并不能反映实际情况,所以我们还要对数据进行标准化处理,这里我们使用z-score对RFM属性进行加工运算。
z-score是一种数据标准化的计算方法,其公式为:
z = (x – μ) / σ
μ代表x所属数据组的平均值,σ代表x所属数据组的方差。所以通过z-score计算,我们将绝对值数据转化为一个数据在所属数据组中的位置(得分),这样不同单位和类型间的数据使用z-score做相互的比较也就有了一定的意义。

这时候会看到数据不但分布较为均匀,而且不同维度间的数值差异也很小了,这样我们可以把三种不同单位的属性一起进行处理。

当我们建立好RFM的数据模型之后,期望通过不同的RFM值,对用户进行区分以进行精准化营销。当然我们可以通过对RFM这三组数值的平均值或者中位数和每个用户进行比较,以建立起一个数据立方,进行群体划分。但另外一方面,一般来说用户群体会大致符合28原则,80%左右的收入是由20%左右的客户所贡献的,所以根据平均值或者中位数进行群体划分也并不能总是科学的反应出不同的用户群体来,所以我们也可以基于数据本身的特性,使用聚类算法进行处理,以便让数据更加“自然”的区分。
这里我们选用非常常用的k-means算法进行聚类计算,k-means聚类的原理并不复杂,首先随机的或者通过更高效的方式(例如k-means++)选取k个点,然后不断迭代的计算,修正这k个点的坐标,目的是让集合中的每个点的距离(有很多种距离算法,比较常用的是欧氏距离)都和k个点里的其中一个尽量的近,而和其他的尽量的远。这样数据集合就能根据自身的分布规律,自然的区分出不同的类别来。

这里我们将k值设定为3,也就是将数据划分为三个部分,通过使用我们处理后的RFM属性进行计算,最终我们得到:

可以看到不同的颜色代表不同的用户类别,可以简单的认为标记为0的是流失用户,1是重点发展用户,2是高价值用户。这样我们就可以对不同的群体使用适合的营销策略了,同时当有新的用户加入后,我们也可以使用得到的k-means模型对其进行预测划分。

在使用这种方式做实际的数据处理时,可能因为数据分布的原因导致区分度并不是特别好,因为根据销售数据进行用户区分,并不是总能发现比较明显的区分“界限”,也就是不同群体间的边界其实是非常模糊和混杂的(从上面的最终分析图也可以看出这样的情况),所以从这个角度讲,单纯通过RFM模型和聚类进行用户群体划分也是有它的局限性的。

④ RFM模型实战

RFM模型实战步骤

  1. 数据准备

    • 导入所需包和读取数据:使用Python的Pandas等库导入数据,确保数据格式正确。
    • 数据清洗:剔除退款订单,只保留成功交易状态的数据,确保数据价值。同时检查数据类型和缺失情况,确保数据完整无缺失。
  2. 关键字段提取

    • 从订单数据中保留买家昵称、付款时间与实付金额等关键字段,这些字段是构建RFM模型的基础。
  3. 构建RFM模型字段

    • R值计算:用今天的日期减去最后一次付款日期,得到最近一次购买距今天的天数。
    • F值计算:按买家昵称分组,统计每个买家的购买次数。
    • M值计算:同样按买家昵称分组,计算每个买家的平均或累计购买金额。
  4. 分值确定与数据分组

    • 制定分值体系:依据R、F、M值,制定分值体系,通常采用5分制。R值可以按30天跨度分组,F值与M值则根据业务理解或数据分位数进行划分。
    • 数据分组与打分:使用Pandas进行数据分组,并根据制定的分值体系对R、F、M值进行打分。
  5. 客户分层

    • 通过R、F、M值与均值对比,简化分类,最终划分出8类客户。这些分类可以基于业务理解进行优化,使分类更加清晰易懂。
  6. 应用客户标签与策略制定

    • 打标签:基于RFM模型的指标给客户打标签,进行人数统计与金额统计。
    • 分析客户:分析客户流失情况与重要价值客户占比,为策略制定提供依据。
    • 制定策略:基于模型结果,针对性地制定流失客户召回策略,优化客户价值,提升业务表现。

⑤ 基于RFM的客户价值分析报告

项目背景

在面向客户制定运营策略、营销策略时,我们希望针对不同的客户推行不同的策略,实现精准化运营,以期获取最大的转化率。精准化运营的前提是客户分类。通过客户分类,对客户群体进行细分,区别出低价值客户、高价值客户,对不同的客户群体开展不同的个性化服务,将有限的资源合理地分配给不同价值的客户,实现效益最大化。在客户分类中,RFM模型是一个经典的分类模型,模型利用通用交易环节中最核心的三个维度——最近消费(Recency)、消费频率(Frequency)、消费金额(Monetary)细分客户群体,从而分析不同群体的客户价值。

项目目标

本项目借助某电商客户数据,探讨如何对客户群体进行细分,以及细分后如何利用RFM模型对客户价值进行分析。在本项目中,主要希望实现以下三个目标:1.借助某电商客户数据,对客户进行群体分类;2.比较各细分群体的客户价值;3.对不同价值的客户制定相应的运营策略。

分析过程

1.数据预览  

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

通过数据可以发现,订单状态有交易成功和退款关闭的,检查是否还有其他情况

只有这两种情况,后续清洗中需剔除退款订单。然后观察数据类型与缺失情况

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

2. 数据清洗

(1)剔除退款

(2)关键字段提取:提取RFM模型所需要的买家昵称,付款时间,实付金额

(3)关键字段构造:构建模型所需的三个字段,R(最近一次购买时间间隔),F(购买频次),M(平均或累计购买金额)

首先构造R值,思路是按买家昵称分组,选取付款日期最大值

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

然后处理F,即每个用户累计购买频次( 明确一下单个用户一天内购买多次订单合并为一次订单 )

思路:引入一个精确到天的日期标签,依照“买家昵称”和“日期标签”分组,把每个用户一天内的多次下单合并,再统计购买次数

最后处理M,本案例M指用户平均支付金额,可以通过总金额除以购买频次计算出来

三个指标合并

3. 维度打分 

维度确认的核心是分值确定。RFM模型中打分一般采取5分制,依据数据和业务的理解,进行分值的划分

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

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

M值我们按照50元的一个区间来进行划分

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

4. 分值计算 

(1)算出每个用户的R,F,M分值

(2)简化分类结果  

通过判断每个客户的R,F,M值是否大于平均值,来简化分类结果。0表示小于平均值,1表示大于平均值,整体组合下来有8个分组

5.客户分层

RFM经典分层按照R,F,M每一项指标是否高于平均值,把用户划分为8类

Python实现思路如下:先定义一个人群数值,将之前判断的R,F,M是否大于均值的三个值加起来

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

然后在python中定义一个判断函数,通过判断人群数值,来返回对应的分类标签

数据解读与建议:

首先查看各类用户占比情况

然后查看不同类型客户消费金额贡献占比

最后导出数据,在tableau中数据可视化展示

通过数据可视化后,我们可以发现:

1.客户流失情况严重,高消费唤回客户,流失客户占比超过总客户的50%

2.高消费唤回客户和频次深耕客户的金额总占比约66%,这两部分客户是消费的重点客户

3.流失客户和新客户的总人数占比约38%,但金额总占比只有约13%

建议:

1.针对高消费唤回客户,流失客户采用唤回策略,推送相关信息,发礼品券等挽留客户

2.针对高消费唤回客户和频次深耕客户,考虑继续挖掘其消费特性,如喜爱购买的产品,消费的时间段,后续据此加强店铺产品与时间段的改进,最大程度留住这两部分客户

3.针对流失客户和新客户金额总占比低,建议推出一些低价产品,用来拉取新客户,保证店铺的活跃性。

⑥ 基于RFM的客户价值分析报告

1. 项目背景
在制定针对客户的运营和营销策略时,我们希望根据不同的客户实施定制化策略,实现精准营销,以提高转化率。精准营销的基础是客户分类。通过客户分类,我们可以对客户群体进行细分,区分出低价值客户和高价值客户,并对不同客户群体提供个性化的服务。这样可以合理分配有限的资源,实现收益最大化。RFM模型是客户分类中的一个经典方法,它基于三个关键维度——最近消费(Recency)、消费频率(Frequency)、消费金额(Monetary)来细分客户群体,并分析不同群体的客户价值。
2. 项目目标
本项目利用某电商的客户数据,探讨如何对客户群体进行细分,并利用RFM模型对客户价值进行分析。项目的主要目标是:
1. 利用某电商的客户数据,对客户进行群体分类。
2. 比较不同细分群体的客户价值。
3. 根据客户价值制定相应的运营策略。
3. 分析过程
1. 数据预览
我们的原始数据是订单表,其中包含用户的交易信息。通过观察数据,我们发现订单状态有交易成功和退款关闭两种。我们检查是否存在其他情况,并只保留这两种状态的订单。然后,我们观察数据的类型和缺失情况。订单表共有28,833行数据,没有缺失值,付款日期是日期格式,实付金额、邮费和购买数量是数值型,其他字段是字符串类型。
2. 数据清洗
(1) 剔除退款订单。
(2) 提取关键字段:买家昵称,付款时间和实付金额。
(3) 构造关键字段:构建RFM模型所需的三个字段,R(最近一次购买时间间隔),F(购买频次),M(平均或累计购买金额)。
首先计算R值,按买家昵称分组,选取付款日期最大值。为了得到R值,我们用当前日期减去每位用户最近一次付款时间。然后计算F值,即每个用户的累计购买频次。对于M值,我们计算用户平均支付金额,通过总金额除以购买频次得出。
3. 维度打分
维度打分的核心是确定分值。在RFM模型中,通常采用5分制,根据数据和业务理解进行分值划分。R值根据行业经验设置为30天一个跨度,左闭右开。F值与购买频次挂钩,每多购买一次,分值增加一分。M值按照50元一个区间划分。这一步确定了每个用户每个指标对应的分值。
4. 分值计算
(1) 计算每个用户的R、F、M分值。
(2) 简化分类结果:通过比较每个客户的R、F、M值与平均值,将结果分为8个组别。
5. 客户分层
根据R、F、M每个指标是否高于平均值,将用户划分为8类。使用Python实现时,首先定义一个人群数值,将R、F、M是否大于均值的三个值相加。人群数值较高的类别将自动忽略前面的0,例如1代表高消费唤回客户,10代表一般客户。然后,在Python中定义一个判断函数,根据人群数值返回相应的分类标签。
6. 数据解读与建议
首先,查看各类用户的占比情况。然后,查看不同类型客户对消费金额的贡献占比。最后,在Tableau中进行数据可视化展示。通过可视化分析,我们发现:
1. 流失客户占比超过总客户的50%,客户流失情况严重。
2. 高消费唤回客户和频次深耕客户的金额总占比约66%,是消费的重点客户。
3. 流失客户和新客户的总人数占比约38%,但金额总占比只有约13%。
建议:
1. 对高消费唤回客户和流失客户采用唤回策略,如推送相关信息、发放礼品券等,以挽留客户。
2. 对高消费唤回客户和频次深耕客户,深入挖掘其消费特性,如喜爱购买的产品、消费的时间段等,据此加强店铺产品与时间段的改进,以留住这两部分客户。
3. 针对流失客户和新客户金额总占比低的情况,推出一些低价产品,以吸引新客户,保证店铺的活跃性。

阅读全文

与pythonrfm相关的资料

热点内容
查魔兽服务器ip地址 浏览:121
安卓4为什么被淘汰 浏览:861
想买一个阿里云的服务器要多少钱 浏览:411
从程序员到架构师之路 浏览:550
androidui架构 浏览:474
元通炒股公式源码 浏览:960
酯化循环气压缩机用什么驱动 浏览:58
java搜索图片 浏览:571
dns服务器地址总是自动变换 浏览:970
android数据包开发 浏览:214
k邻近搜索算法brute 浏览:294
微软云如何开服务器 浏览:29
心体与性体pdf 浏览:196
phpnullisset 浏览:793
加密相册解密到照片库在哪 浏览:375
php变量前加 浏览:814
缓解压力最好的坐垫 浏览:138
51单片机ret 浏览:778
python广度优先有向权值图 浏览:874
程序员是技术 浏览:253