RFM模型:是衡量客户价值和客户创利能力的重要工具和手段。在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到的。该机械模型通过一个客户的近期购买行为(recency)、购买的总体频率(Frequency)以及花了多少钱(Monetary)3项指标来描述该客户的价值状况。

RFM模型意义:

1、最近有过交易行为的客户,再次发生交易的可能性要高于最近买有交易行为的客户;

2.交易频率较高的客户比交易频率较低的客户,更有可能再次发生交易行为;

3.过去所有交易总金额较多的客户,比交易总金额较少的客户,更有消费积极性

RFM模型每一类根据活跃程度与贡献有两种可能(高或低),排列组合到一起对应到8中情况:如图所示RFM模型价值划分

分析目的:基于客户消费行为数据进行用户价值划分为用户分类,刻画用户价值画像

分析过程:

对R_s类进行编码并计算各项得分,表示离指定日期越近,得分越高,最高4分,最低1分

F_s类,特定时间段内交易频率越高,得分越高,最高4分,最低1分

M_s类,特定时间段内交易金额越高,得分越高,最高4分,最低1分

Python代码如下:

import pandas as pd

import datetime as dt

import warnings

warnings.filterwarnings('ignore')

orders = pd.read_excel('C:\\Users\\willc\\Desktop\\data\\RFM Analysis.xlsx')#导入数据文件

orders.head()

order_dateorder_idcustomergrand_total

02009-07-11CA-2011-100006Dennis Kane378

12007-08-11CA-2011-100090Ed Braxton699

22011-03-14CA-2011-100293Neil Franz sisch 91

32011-01-29CA-2011-100328Jasper Cacioppo 4

42004-08-11CA-2011-100363Jim Mitchum 21

now = dt.datetime(2014,12,31)###选择时间

orders['order_date'] = pd.to_datetime(orders['order_date'])###时间格式转换

###数据的分组变换处理

rfmtable = orders.groupby('customer').agg({'order_date':lambda x: (now-x.max()).days,#recency

'order_id':lambda x: len(x),#frequency

'grand_total':lambda x: x.sum()})#monetary

rfmtable.rename(columns = {'order_date': 'recency',

'order_id': 'frequeency',

'grand_total': 'monetary'},inplace = True)##重命名对列名称

rfmtable.head()

recencyfrequencymonetary_value

customer

Aaron Bergman11443887

Aaron Hawkins1271744

Aaron Smayling46173050

Adam Bellavance10587756

Adam Hart34103249

接下来对数据进行切割分层利用分位数函数(quantile),并且建立细分表

quantiles = rfmtable.quantile(q = [0.25,0.5,0.75])

quantiles

recencyfrequencymonetary_value

0.2544.05.01145.0

0.50154.06.02257.0

0.75404.08.03784.0

rfmsegmentation = rfmtable

def rfmclass(x, p, d):

if x <= d[p][0.25]

return 1

elif x <= d[p][0.50]:

return 2

elif x <= d[p][0.75]:

return 3

else:

return 4

def fmclass(x ,p ,d):

if x <= d[p][0.25]:

return 4

elif x <= d[p][0.50]:

return 3

elif x <= d[p][0.75]:

return 2

else:

return 1

rfmsegmentation['R_Quantile'] = rfmsegmentation['recency'].apply(fmclass,args=('recency',quantiles))

rfmsegmentation['F_Quantile'] = rfmsegmentation['frequency'].apply(rfmclass,args=('frequency',quantiles))

rfmsegmentation['M_Quantile'] = rfmsegmentation['monetary_value'].apply(rfmclass,args=('monetary_value',quantiles))

rfmsegmentation['RFMClass'] = rfmsegmentation.R_Quantile.map(str)+rfmsegmentation.F_Quantile.map(str)+rfmsegmentation.M_Quantile.map(str)

rfmsegmentation.head()

recencyfrequencymonetary_valueR_QuantileF_QuantileM_QuantileRFMClass

customer

Aaron Bergman11443887111111

Aaron Hawkins1271744432432

Aaron Smayling46173050133133

Adam Bellavance10587756334334

Adam Hart34103249443443

rfmsegmentation.to_csv('C:\\Users\\willc\\Desktop\\RFM.csv')

python 估值模型_基于Python的客户价值细分模型(RFM)相关推荐

  1. 基于python的步态分析_基于python实现RFM分析

    CREATED BY TAO 一 .先了解一下什么是RFM分析,RFM分析是根据客户活跃程度和交易金额贡献,进行客户价值细分的一种客户细分方法. RFM由R(Recency)进度,F(Frequenc ...

  2. python 数据分析 电信_基于Python的电信客户流失分析和预测

    一.项目背景 电信服务是生活中常见的消费服务,在现代社会,凡是使用手机打电话,或者在家看电视,都必须通过电信运营商提供的通话.网络等服务才能实现.本文采用来自kaggle平台的电信客户数据集,来分析人 ...

  3. python地图匹配_基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法

    1. 摘要 本篇博客简单介绍下用隐马尔科夫模型(Hidden Markov Model, HMM)来解决地图匹配(Map-Matching)问题.转载请注明网址. 2. Map-Matching(MM ...

  4. python管理系统设计_基于Python和Django框架的物联网智能设备管理系统的设计与实现

    杨武帅 万启元 桑贤伯 摘 要:针对目前日益增多的智能设备提出了兼容性好,稳定性高,易于管理的管理系统的设计方法.在服务器端使用Python和Django框架进行与设备的数据交互及设备管理网站的构架, ...

  5. 基于python爬虫数据处理_基于Python爬虫的校园数据获取

    苏艺航 徐海蛟 何佳蕾 杨振宇 王佳鹏 摘要:随着移动时代的到来,只适配了电脑网页.性能羸弱的校园教务系统,已经不能满足学生们的移动查询需求.为此,设计了一种基于网络爬虫的高实用性查询系統.它首先通过 ...

  6. python 量化交易_基于Python的量化交易工具清单(上)

    -- Python量化工具清单 -- 以下内容来源于Wilson Freitas的Github项目"Awesome Quant".原文中包含了丰富的语言类别,但是后续介绍主要针对P ...

  7. python自动化测试开发_基于python的selenium2自动化测试从基础到实战(Python3、selenium2、自动化测试、web测试)...

    Selenium2是目前比较流行的一款针对web页面测试的自动化测试工具,他的前身是Selenium .Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozi ...

  8. python 放射 水平_基于Python的放射性核素大气扩散程序初步开发与验证

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的放射性核素大气扩散程序初 步开发与验证 作者:刘朋杰,张旖旎,刘天元 来源:<科学与财富> 2018 年第 ...

  9. python 蓝牙开发_基于python实现蓝牙通信代码实例

    这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装和示例 linux下安装 sudo apt ...

最新文章

  1. c语言代码,输入两个数,输出第一个数到第二个数之间所有的数
  2. 二值网络--Bi-Real Net: Enhancing the Performance of 1-bit CNNs
  3. 【 FPGA 】序列检测器的Moore状态机实现
  4. 巧用linux云服务器下的的/dev/shm/,避开磁盘IO不给力!
  5. 本地连接时,通过localhost不能登陆到指定的端口
  6. android RxJava(RxAndroid)的简单使用
  7. 针对12306.cn网站应用架够的一些看法
  8. linux加密文件_如何在Linux上使用Gocryptfs加密文件
  9. gstat | 空间插值(三)——克里金插值之泛克里金和简单克里金
  10. 简记GAN网络的loss
  11. luogu2014 选课
  12. php体检管理系统,学生健康体检信息管理系统
  13. matlab coder 转 c语言,MATLAB Coder从MATLAB生成C/C++代码步骤
  14. 【学习总结】标准日本语(陈述句)
  15. 根的存在定理(零点存在定理)
  16. 解决方案 | 解决Adobe Acrobat 2020安装报错的一些问题,如无法打开键
  17. 论文笔记《Aspect-Aware Latent Factor Model:Rating Prediction with Ratings and Reviews》
  18. 京东物流IPO:商流、物流、资金流,“三流”难归一
  19. oracle 落落是谁,落落是老虎妖精吗?落落的父母是什么身份?
  20. 7.5W10W无线充电解决方案原理图

热门文章

  1. 微信小程序制作天气查询系统
  2. unity修改默认字体
  3. [深度学习]动手学深度学习笔记-11
  4. VirtualBox安装Extention Pack教程
  5. 影响利率风险结构的因素_利率风险结构是什么意思 影响利率的因素
  6. 为何数据分析师更容易获得高薪工作?
  7. 安卓camera2 API获取YUV420_888格式详解
  8. (E2)ENVI-met模型建立——创建项目及数据库的使用
  9. 4.3 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company**
  10. Linux内核 eBPF基础:perf(2):perf性能管理单元PMU的注册