欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python pandas RFM模型應用實例詳解

 更新時間:2019年11月20日 11:19:16   作者:閑魚!!!  
這篇文章主要介紹了Python pandas RFM模型應用,結(jié)合實例形式詳細分析了pandas RFM模型的概念、原理、應用及相關操作注意事項,需要的朋友可以參考下

本文實例講述了Python pandas RFM模型應用。分享給大家供大家參考,具體如下:

什么是RFM模型

根據(jù)美國數(shù)據(jù)庫營銷研究所Arthur Hughes的研究,客戶數(shù)據(jù)庫中有3個神奇的要素,這3個要素構(gòu)成了數(shù)據(jù)分析最好的指標:

  • 最近一次消費 (Recency): 客戶最近一次交易時間的間隔。R值越大,表示客戶交易距今越久,反之則越近;
  • 消費頻率 (Frequency): 客戶在最近一段時間內(nèi)交易的次數(shù)。F值越大,表示客戶交易越頻繁,反之則不夠活躍;
  • 消費金額 (Monetary): 客戶在最近一段時間內(nèi)交易的金額。M值越大,表示客戶價值越高,反之則越低。

RFM實踐應用

1、前提假設驗證

RFM模型的應用是有前提假設的,即R、F、M值越大價值越大,客戶未來的為企業(yè)帶來的價值越大。這個前提假

設其實已經(jīng)經(jīng)過大量的研究和實證,假設是成立的。不過為了更加嚴謹,確保RFM模型對于特殊案例是有效的,

本文還進行了前提假設驗證:

ps:Frequency、Monetary均為近6個月內(nèi)的數(shù)據(jù),即1-6月數(shù)據(jù);

利用相關性檢驗,驗證假設:

  • 最近購買產(chǎn)品的用戶更容易產(chǎn)生下一次消費行為
  • 消費頻次高的用戶,用戶滿意度高,忠誠度高,更容易產(chǎn)生下一次消費行為
  • 消費金額高的用戶更容易帶來高消費行為

2、RFM分級

簡單的做法,RFM三個指標以均值來劃分,高于均值的為高價值、低于均值的為低價值,如此可以將客戶劃分為8大類:

本文采取的方法是將三個指標進行標準化,然后按照分為數(shù)劃分為5個等級,數(shù)值越大代表價值越高;當然最終劃分的規(guī)則還是要結(jié)合業(yè)務來定。劃分為5個等級后,客戶可以細分為125種。

#讀取數(shù)據(jù)
rfm<-read.csv('~/desktop/rfm1_7.csv',header=TRUE)
summary(rfm)
#數(shù)據(jù)分布
par(mfrow=c(1,3))
boxplot(rfm$rankR1) 
boxplot(rfm$rankF1) 
boxplot(rfm$rankM1)
#rfm分級
breaks1<-quantile(rfm$Recency, probs = seq(0, 1, 0.2),names = FALSE)
breaks1<-c(1,14,30,57,111,181) #以流失用戶的定義來設置分級 30天以上為流失用戶
breaks2<-quantile(rfm$Frequency, probs = seq(0, 1, 0.2),names = FALSE)
breaks2<-c(1,2,3,6,14,164) 
breaks3<-quantile(rfm$Monetary, probs = seq(0, 1, 0.2),names = FALSE)
rfm$rankR1<- cut(rfm$Recency,breaks1, 5,labels=F)
rfm$rankR1<- 6-rfm$rankR1
rfm$rankF1<- cut(rfm$Frequency,breaks2, 5,labels=F)
rfm$rankM1<- cut(rfm$Monetary,breaks3, 5,labels=F)

3、客戶分類

本文采用K-means聚類進行分類,聚類結(jié)果結(jié)合業(yè)務劃分為4大類:

  • Cluster1:價值用戶R、F、M三項指標均較高;
  • Cluster2,3:用戶貢獻值最低,且用戶近度(小于2)和頻度較低,為無價值客戶;
  • Cluster4:發(fā)展用戶,用戶頻度和值度較低,但用戶近度較高,可做up營銷;
  • Cluster5:挽留客戶,用戶近度較低,但頻度和值度較高,需采用挽留手段

k值選擇:

聚類結(jié)果:

#聚類
df<-rfm[,c(6,7,8)]
p1<-fviz_nbclust(df, kmeans, method = "wss")
p2<-p1 + geom_vline(xintercept = 5, linetype = 2)
km_result <- kmeans(df, 5)
dd <- cbind(rfm,df, cluster = km_result$cluster)
##查看每一類的數(shù)目
table(dd$cluster)
picture<-fviz_cluster(km_result, df, geom = "point")
####聚類結(jié)果解釋####
rfm_final <- within(dd,{Custom = NA
Custom[cluster == 1] = '高價值客戶' 
Custom[cluster == 2 ] = '無價值客戶' 
Custom[ cluster == 3] = '無價值客戶' 
Custom[cluster == 4] = '重點發(fā)展客戶'  
Custom[cluster == 5] = '重點挽留客戶' 
})

4、RFM打分

步驟3,我們將客戶劃分為四大類,其實如果一類客戶中還有大量的客戶,此時為了精細化營銷,可以根據(jù)RFM進行加權(quán)打分,給出一個綜合價值的分。這里,運用AHP層次分析法確定RFM各指標權(quán)重:

客戶價值RFM_SCORE= 0.25rankR + 0.20rankF+0.55*rankM

AHP層次分析法(專家打分法)

總結(jié)

上述客戶分類其實比較粗曠,真正在面對千萬級客戶量時,如此劃分為四大類是難以滿足運營需求的。運營中,還需要綜合CRM中其他指標、維度。

ps:后續(xù)作者利用RFM客戶價值得分進行潛在客戶挖掘,嘗試利用決策樹等模型挖掘平臺潛在客戶特征。

簡單實例

import pandas as pd
import numpy as np
import time
#todo 讀取數(shù)據(jù)
data = pd.read_csv('RFM_TRAD_FLOW.csv',encoding='gbk')
# print(ret)
# todo RFM------>R(最近一次消費)
#todo 時間與字符串相互轉(zhuǎn)換
data['time'] = data['time'].map(lambda x:time.mktime(time.strptime(x,'%d%b%y:%H:%M:%S')))
# print(data)
# todo 分組
groupby_obj = data.groupby(['cumid','type'])
# for name,data in groupby_obj:
#   print(name)
#   print(data)
# todo 取值
R = groupby_obj[['time']].max()
# print(
# todo 轉(zhuǎn)為透視表
r_trans = pd.pivot_table(R,index='cumid',columns='type',values='time')
# print(data_trans)
# todo 替換缺失值 有缺失值,替換成最遠的值
r_trans[['Special_offer','returned_goods']] = r_trans[['Special_offer','returned_goods']].apply(lambda x:x.replace(np.nan,min(x)),axis = 0)
# print(data_trans)
r_trans['r_max'] = r_trans.apply(lambda x:sum(x),axis=1)
# print(r_trans)
# todo RFM------>F(消費頻率)
# 取值
F =groupby_obj[['transID']].count()
# print(F)
#轉(zhuǎn)為透視表
f_trans = pd.pivot_table(F,index='cumid',columns='type',values='transID')
# print(f_trans)
#替換缺失值
f_trans[['Special_offer','returned_goods']]= f_trans[['Special_offer','returned_goods']].fillna(0)
# print(f_trans)
#
f_trans['returned_goods'] = f_trans['returned_goods'].map(lambda x:-x)
# print(f_trans)
f_trans['f_total'] = f_trans.apply(lambda x:sum(x),axis=1)
# print(f_trans)
# todo RFM------>M(消費金額)
# 取值
M =groupby_obj[['amount']].sum()
# print(M)
#轉(zhuǎn)為透視表
m_trans = pd.pivot_table(M,index='cumid',columns='type',values='amount')
# print(f_trans)
#替換缺失值
m_trans[['Special_offer','returned_goods']]= m_trans[['Special_offer','returned_goods']].fillna(0)
# print(f_trans)
#
m_trans['m_total'] = m_trans.apply(lambda x:sum(x),axis=1)
# print(m_trans)
# 合并
RFM=pd.concat([r_trans["r_max"],f_trans['f_total'],m_trans['m_total']],axis=1)
print(RFM)
r_score = pd.cut(RFM.r_max,3,labels=[0,1,2])
f_score = pd.cut(RFM.r_max,3,labels=[0,1,2])
m_score = pd.cut(RFM.r_max,3,labels=[0,1,2])

關于Python相關內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python面向?qū)ο蟪绦蛟O計入門與進階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • 在matlab中創(chuàng)建類似字典的數(shù)據(jù)結(jié)構(gòu)方式

    在matlab中創(chuàng)建類似字典的數(shù)據(jù)結(jié)構(gòu)方式

    這篇文章主要介紹了在matlab中創(chuàng)建類似字典的數(shù)據(jù)結(jié)構(gòu)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 用Python判斷奇偶數(shù)示例

    用Python判斷奇偶數(shù)示例

    大家好,本篇文章主要講的是用Python判斷奇偶數(shù)示例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • python之django路由和視圖案例教程

    python之django路由和視圖案例教程

    這篇文章主要介紹了python之django路由和視圖案例教程,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Python的deque雙端隊列詳解

    Python的deque雙端隊列詳解

    這篇文章主要介紹了Python的deque雙端隊列詳解,deque(雙端隊列)是一種數(shù)據(jù)結(jié)構(gòu),允許使用O(1)時間復雜度從兩端添加和刪除元素, Python的deque類實現(xiàn)了此數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下
    2023-09-09
  • 淺談用Python實現(xiàn)一個大數(shù)據(jù)搜索引擎

    淺談用Python實現(xiàn)一個大數(shù)據(jù)搜索引擎

    這篇文章主要介紹了淺談用Python實現(xiàn)一個大數(shù)據(jù)搜索引擎,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Flask入門之上傳文件到服務器的方法示例

    Flask入門之上傳文件到服務器的方法示例

    這篇文章主要介紹了Flask入門之上傳文件到服務器的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Python單向鏈表和雙向鏈表原理與用法實例詳解

    Python單向鏈表和雙向鏈表原理與用法實例詳解

    這篇文章主要介紹了Python單向鏈表和雙向鏈表原理與用法,結(jié)合實例形式詳細分析了單向鏈表與雙向鏈表的概念、原理以及創(chuàng)建、添加、刪除等相關操作技巧,需要的朋友可以參考下
    2018-08-08
  • Python 條件,循環(huán)語句詳解

    Python 條件,循環(huán)語句詳解

    這篇文章主要介紹了詳解Python中的條件,循環(huán)語句,循環(huán)語句是學習各個編程語言的最基本的基礎知識,需要的朋友可以參考下
    2021-09-09
  • python+elasticsearch實現(xiàn)標簽匹配計數(shù)操作

    python+elasticsearch實現(xiàn)標簽匹配計數(shù)操作

    這篇文章主要介紹了python+elasticsearch實現(xiàn)標簽匹配計數(shù)操作,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • Python Django框架設計模式詳解

    Python Django框架設計模式詳解

    Django是一個開源的Web應用框架,由Python寫成。采用MVC的軟件設計模式,主要目標是使得開發(fā)復雜的、數(shù)據(jù)庫驅(qū)動的網(wǎng)站變得簡單。Django注重組件的重用性和“可插拔性”,敏捷開發(fā)和DRY法則(Don’t Repeat Yoursef)
    2021-11-11

最新評論