RFM模型:根据客户消费行为的三个关键指标(R-最近一次的购物时间,F-一段时间内客户的购物次数,M-客户消费总金额)来将客户分层并针对不同层级的客户进行不同的营销策略;

此次将客户分成8类(按R、F、M三个值的平均值作为阈值来进行划分),整理成函数如下:

#函数:该函数将客户按RFM方法分成八类,且显示对应的营销策略(分类的阈值和等级以及对于的营销策略可以按需进行更改)
def rfm_strategy(r,f,m,recently,frenquency,money):if r>=recently:if f >= frenquency:if m>=money:rfm="重要价值客户"strategy="提高满意度,增加留存"else:rfm="一般价值客户"strategy="引导其消费"else:if m >= money:rfm="重要保持客户"strategy="通过活动提高购买频率"else:rfm="一般保持客户"strategy="利用优惠吸引客户消费"else:if f >= frenquency:if m>=money:rfm="重要发展客户"strategy="触达客户,防止客户流失"else:rfm="一般发展客户"strategy="较少关注"else:if m >= money:rfm="重要挽留客户"strategy="了解用户需求想办法挽留"else:rfm="一般挽留客户"strategy="较少关注"return rfm,strategy

接下来,将数据导入,计算出对应的数值,这里导入的数据是一张完整订单明细,一个客户会有多次消费记录,在这里我们需要对数据进行汇总和聚合操作,这里使用pivot_table方法来进行数据整理,这里需要留意,数据在进行此操作之前需要检查是否有脏数据(重复记录、重要值缺失、异常值),如有需先进行数据清洗

#导入数据,将订单日期转换成与目前日期相差的月份;
# 这里使用了pd.to_datetime方法将日期格式转化成标准日期格式;
# 最后使用relativedelta计算两个日期之间的月份差值;
data=pd.read_csv(r"D:\示例 - 超市.csv")
data['当前日期']=pd.Timestamp(date.today())
data['订单日期']=pd.to_datetime(data['订单日期'])
data['订单日期']=[relativedelta(dt1=data['当前日期'][i],dt2=data['订单日期'][i]).months for i in range(0,len(data['订单日期']))]
#使用透视表功能,统计每个客户的最近一次购买日与目前日期相差的月份、一段时间内的购买金额、一段时间内的购买频次;
#并计算出R、F、M的均值
result=pd.pivot_table(data=data[['客户名称','订单 Id','订单日期','销售额']],index=['客户名称'],\values=['订单 Id','订单日期','销售额'],aggfunc={'订单 Id':np.size,'订单日期':np.min,'销售额':np.sum})
recently=result['订单日期'].mean()
frenquency=result['订单 Id'].mean()
money=result['销售额'].mean()
result=pd.DataFrame(data=result).reset_index()

这里已经将关键数值计算出来了,接下来可以使用我们之前写的函数来给客户加分类标签

#使用rfm_strategy函数计算每个客户对应的分类和策略
result[['标记','策略']]=[rfm_strategy(result['订单日期'][i],result['订单 Id'][i],result['销售额'][i],recently,frenquency,money)\for i in range(0,len(result['订单日期']))]

接下来我们可以选择将数据导出(使用pd.to_csv方法),或者直接可视化看下客户分类的一个情况

#对分类的客户数量进行统计
result_data=pd.pivot_table(data=result,index=['标记'],values=['订单日期'],aggfunc='size')
result_data=pd.DataFrame(data=result_data).reset_index()
#对客户分类情况进行可视化
sns.set_style({'font.sans-serif':'Microsoft YaHei'})
plt.rcParams['font.sans-serif']=['SimHei']
plt.figure(figsize=(9,9))
x=range(8)
y1=result_data[0]
plt.title("RFM客户分类情况")
plt.bar(x, y1, tick_label=result_data['标记'], width=0.5,align='center')
ax=plt.gca()
for labels in ax.xaxis.get_ticklabels():labels.set_rotation(45)
plt.show()

python-RFM模型相关推荐

  1. python给用户打标签_用Python实现RFM模型——互联网产品用户分层必备技巧

    1.前言 RFM模型即"R"--Recency(最近一次消费时间)."F"--Frequency(一段时间内消费频次)."M"--(一段时间 ...

  2. RFM模型的理解和python案例分析

    RFM模型是什么 RFM是客户关系管理(CRM:Customer Relationship Management)中一种重要的分析模型,通过研究一个客户的交易时间.交易频率和交易总金额来衡量客户的价值 ...

  3. python 估值模型_基于Python的客户价值细分模型(RFM)

    RFM模型:是衡量客户价值和客户创利能力的重要工具和手段.在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到的.该机械模型通过一个客户的近期购买行为(recency).购买的总体频率( ...

  4. Python 某电子产品销售数据分析报告及RFM模型(一)

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64 ...

  5. python数据分析实战之用户分析及RFM模型分析

    理论基础知识可以看我之前的博客: 1.python之Numpy知识点详细总结 2.python最最最重要的数据分析工具之pandas 3.pandas之表连接与高级查询 也可以进入我的专栏:欢迎订阅哦 ...

  6. python 估值模型_利用RFM模型建模,并通过聚类分析、分类,分别算出8中不同的价值会员...

    RFM-Clustering 利用RFM模型建模,并通过聚类分析.分类,分别算出8中不同的价值会员 RFM模型构建会员价值标签 R:最近一次消费(Recency) F:消费频率(Frequency) ...

  7. 【python数据运营】Task02 会员RFM模型的学习和运用

    文章目录 前言 1 RFM模型介绍 2 代码实践 (1) 导入库 (2) 读取数据 (3) 数据审查 (4) 数据预处理,去除缺失值和异常值 (5) 确定RFM划分区间 (6)计算RFM因子权重 (7 ...

  8. 基于客观事实的 RFM 模型(Python 代码)

    CDA数据分析师 出品 0 1 背景 RFM(Recency Frequency Monetary)模型是衡量客户价值和客户创利能力的重要工具和手段.在众多的客户关系管理(CRM)的分析模式中,RFM ...

  9. 【Python】RFM模型实现

    [Python]RFM模型实现 1 RFM模型 RFM模型:根据用户历史行为数据,结合业务理解,实现用户分层分类,助力用户的精准营销,是衡量客户价值和客户创利能力的重要工具和手段 Recency 最近 ...

  10. Python数据挖掘-RFM模型K-means聚类分析-航空公司客户价值分析

    使用教材:<Python数据分析与挖掘实战> 模型:RFM模型 算法:K-means聚类:其他方法还用到了层次聚类 数据:需要数据的可以评论里call. 内容: (1)案例: 航空公司客户 ...

最新文章

  1. PyTorch入门学习(二):Autogard之自动求梯度
  2. Java渐变进度条_Android ProgressBar自定义图片进度,自定义渐变色进度条
  3. Tuple解决在视图中通过razor获取控制器传递给视图的匿名对象的报错问题
  4. VTK:PolyData之NullPoint
  5. S3c2440A平台HIVE注册表+binfs的实现
  6. 关于科技创新,2021年政府工作报告这样说
  7. 电脑排行榜笔记本_热门笔记本电脑排行榜推荐_windows7教程
  8. 不得不收藏的大数据Hadoop教程:Hadoop集群搭建
  9. Node.js meitulu图片批量下载爬虫1.04版
  10. 邓应海:3.24最新黄金走势分析,黄金多空操作建议
  11. 拉卡拉支付率先布局B端市场
  12. 融会贯通面对对象编程思想
  13. getValueFromEvent和shouldUpdate
  14. Static Clutter Removal DPU
  15. Date日期格式转换
  16. NIKE的网络营销案例给我们的启发
  17. Acwing2058. 笨拙的手指
  18. 英达科技委任唐伟章教授担任非执行董事
  19. 电商技术架构演进过程——具体到每一个技术
  20. js验证用户输入的 座机/手机/固定电弧 格式是否正确

热门文章

  1. web前端期末大作业:云南旅游网页主题网站设计——云南城市旅游5页HTML+CSS+JavaScript
  2. android自定义抽奖,Android 抽奖活动 (自定义view实现) 转盘
  3. 抽奖活动的奖品怎么设置?
  4. 逆転裁判5android,逆转裁判5安卓-phoenix wright: ace attorney dual destinies官方app2021免费...
  5. UNITY自动化测试简单方法
  6. 中国富豪第一桶金挖掘的九大方式
  7. c语言中puts的作用,puts和fputs函数及其区别,C语言puts和fputs函数详解
  8. Python图像处理应用之绘制log函数图像
  9. 什么是云?什么是云服务?什么是云计算?
  10. HTC M7日文版HTL22刷机包 毒蛇2.5.0 ART NFC Sense6.0