RFM模型介绍
RFM模型是衡量客户价值和客户创利才能的重要东西和手法。在很多的客户关系办理(CRM)的剖析形式中,RFM模型是被广泛说到的。该机械模型通多一个客户的近期购买行为、购买整体频率,以及花了多少钱3项目标来描绘该客户的价值情况。
最近一次消费(Recency)
消费频率(Frequency)
消费金额(Monetary)
R/F/M核算(sql处理法)
1、R值核算
可选取2020-12-31日(最终一天)作为判别最近一次消费的间隔日期
SELECT customerid,(to_date('2020-12-31','yyyy-mm-dd')-to_date(MAX(date_id),'yyyy-mm-dd')) R_timeFROM customer_orderGROUP BY customeridORDER BY R_time
依据剖析成果显现的天数差来反响客户忠诚度。天数差越小阐明客户忠诚度越高2、F值核算频率协助咱们了解客户进行了多少次消费
SELECT customerid,count(DISTINCT invoiceno) as F_timesFROM customer_orderGROUP BY customerid;
3、M值核算
SELECT customerid,sum(total_price) M_timesFROM customer_orderGROUP BY customerid;
依据核算能够了解到买卖金额的首要规模
4、RFM数据汇总为便利后续数据处理,为RFM值创立视图
CREATE VIEW view_rfm AS(select CustomerID, (to_date('2020-12-31','yyyy-mm-dd')-to_date(MAX(date_id),'yyyy-mm-dd')) "天数差", count(DISTINCT invoiceno) "消费次数", sum(total_price) "消费金额" sfrom customer_ordergroup by CustomerID
5、RFM评分
#N,n,a自界说界值SELECT CustomerID,天数差,消费次数,消费金额,(case when 天数差<=N1 then 5when 天数差 >N1 and 天数差 <=N2 then 4 when 天数差>N2 and 天数差<=N3 then 3 when 天数差>N3 and 天数差<=N4 then 2 else 1 END) "R评分",(case when 消费次数<=n1 then 1when 消费次数 >n1 and 消费次数 <=n2 then 2 when 消费次数>n2 and 天数差<=n3 then 3 when 消费次数>n3 and 消费次数<=n4 then 4 else 5 END) "F评分",(case when 消费金额<=a1 then 1when 消费金额 >a1 and 消费金额 <=a2 then 2 when 消费金额>a2 and 消费金额<=a3 then 3 when 消费金额>a3 and 消费金额<=a4 then 4 else 5 END) "M评分"from view_rfm;
6、客户分层阈值RFM评分完结,保存视图为view_rfm1,用各自的平均值做为客户区分的阈值,再做最终的客户分层处理
select ROUND(avg(R评分),1) "R平均值",ROUND(avg(F评分),1) "F平均值",ROUND(avg(M评分),1) "M平均值"FROM view_rfm1;
select CustomerID,(case when R评分>3 then 1 else 0 END) "R值",(case when F评分>1 then 1 else 0 END) "F值",(case when M评分>1.1 then 1 else 0 END) "M值"FROM view_rfm1;# RFM完结后,保存视图为view_rfm2
7、客户分层依据RFM阈值和客户评分分层表,对客户行为进行分层处理
SELECT CustomerID,(case when R值=1 and F值=1 and M值=1 then '重要价值客户' when R值=0 and F值=1 and M值=1 then '重要唤回客户' when R值=1 and F值=0 and M值=1 then '重要开展客户' when R值=0 and F值=0 and M值=1 then '重要款留客户' when R值=1 and F值=1 and M值=0 then '一般价值客户' when R值=1 and F值=0 and M值=0 then '一般开展客户' when R值=0 and F值=1 and M值=0 then '一般坚持客户' ELSE '一般款留客户' END) "客户分层"from view_rfm2
重要价值客户,RFM值都很高,可为其供给优质专属服务,进步其消费体会,添加客户忠诚度
重要开展客户,消费频率低,可是R和M值都很高,能够进行定向推行或供给价格优惠,进步其消费频次
重要唤回客户,最近消费的时刻较为长远,或许存在丢失,但曾经的消费金额与频率较高,需了解详细长时刻未消费的原因,针对性供给对策
重要款留客户,消费金额高,但长时刻未进行消费且消费频率低,可自动联络或举办老客户召回活动,尽或许款留
R/F/M核算(python处理法)
#画RFM,先对数据进行透视rfm=df.pivot_table(index='user_id', values=['date_id','total_price','invoiceno'], aggfunc={'date_id':'max', 'total_price':'sum', 'invoiceno':'sum'})
RFM核算:
#获取最近消费,可选取2020年最终一天作为判别最近一次消费的间隔日期rfm['R']= (rfm.to_date('2020-12-31','yyyy-mm-dd') - rfm.order_dt.max())/np.timedelta64(1,'D')# 重命名 R :消费时刻 F:消费金额 M:消费频次rfm.rename(columns={'order_products':"F",'order_amount':'M'},inplace=True)#和各自的均值比较rfm[['R','F','M']].apply(lambda x:x-x.mean())#界说打标签的函数def rfm_func(x): level=x.apply(lambda x:'1' if x>=0 else '0') # level 的类型是 series,index 是 R、F、M label=level.R + level.F + level.M d={# R 为1 表明比均值大,离最早时刻近,F为1 表明 消费金额比较多,M 为1 表明消费频次比较多,所以是重要价值客户 '111':'重要价值客户', '011':'重要坚持客户', '101':'重要开展客户', '001':'重要款留客户', '110':'一般价值客户', '010':'一般坚持客户', '100':'一般开展客户', '000':'一般款留客户', } result=d[label] return result# 留意这里是要一行行的传递进来,所以 axis=1,传递一行得到一个 111,然后匹配回来一个值rfm['label']=rfm[['R','F','M']].apply(lambda x:x-x.mean()).apply(rfm_func,axis=1)
导入excel表中进行Powerbi作图
#对标签求和计数rfm.groupby('label').sum()rfm.groupby('label').count()#导入excel表中rfm.to_excel(r'.暂时表RFM模型.xlsx'
RFM 的区分规范应该以事务为准,也能够经过切比雪夫去除极值后求均值,而且 RFM 的各个区分规范能够都不相同尽量用小部分的用户掩盖大部分的额度;不要为了数据美观区分等级
作者:宁夏1991
链接:https://www.jianshu.com/p/d582a6ecdc59
上一年今天运营文章2022:周杰伦直播超654万人观看,总互动量破4.5亿,助力快手再破纪录(0)2022:小红书账号剖析丨小红书kol速成干货共享(0)2022:小红书笔记录入怎样查?凭借小红书数据剖析东西,4种方法进步录入率~(0)2022:小红书达人协作报价专区答疑丨博主报价多少合理?(0)2022:助力中视频创作者开展,西瓜视频联合新榜上线「新瓜数据」(0)