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

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')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值