基于python實現(xiàn)RFM分析

CREATED BY TAO


一 .什么是RFM分析,RFM分析是根據(jù)客戶活躍程度和交易金額貢獻,進行客戶價值細分的一種客戶細分方法。

RFM由R(Recency)進度,F(xiàn)(Frequency)頻度,M(Monetary)額度組成。R表示客戶最近一次交易時間的間隔。R值越大,表示客戶交易發(fā)生的日期越久。R值越小,表示客戶交易發(fā)生的日期越近。R表示客戶在最近一段時間內(nèi)交易的次數(shù)。F值越大,表示客戶交易越頻繁。F值越小,表示客戶越不活躍。M表示客戶在最近一段時間內(nèi)交易的金額。M值越大,表示客戶價值越高。M值越小,表示客戶價值越低。這樣不同分類組合,就形成了八種客戶類型.


RFM的八種客戶類型

RFM的分析過程

FRM=100*R_S+10*F_S+1*M_S


.接下來就是基于python來進行RFM分析


將csv數(shù)據(jù)導(dǎo)入python
查看數(shù)據(jù)框維度和數(shù)據(jù)框內(nèi)的數(shù)據(jù)類型
一共有5列數(shù)據(jù),每列有76050行
數(shù)據(jù)雖然有5列,5個字段,但真正參與分析的只有4個字段USERID、ORDERDATE、ORDERID、AMOUNTINFO

USERID列為客戶ID、ORDERDATE列為時間列、OEDERTD列為訂單ID、AMOUNTINFO列為金額列

可以看出有缺失值的列為ORDERDATE列和AMOUNTINFO列

第一步:進行數(shù)據(jù)清洗

查看AMOUNTINFO列中的最大值為30999
查看AMOUNTINFO列中的最大值為為0.5

(1)刪除所有空值的行

刪除所有為空值的行,并把數(shù)據(jù)添加到dt數(shù)據(jù)框中

(2)篩選AMOUNTINFO列的數(shù)據(jù),因為金額的最小值為0.5,數(shù)值<1,因此要提取出AMOUNTINFO列中>1的數(shù)據(jù)進行分析

將數(shù)據(jù)提取出來后依然放入dt數(shù)據(jù)框,按照金額大小降序排列
查看dt數(shù)據(jù)框的維度和數(shù)據(jù)類型
刪除和提取數(shù)據(jù)之后?dt數(shù)據(jù)框一共有5列數(shù)據(jù),每列有75240行

(3)處理時間列的數(shù)據(jù)類型

已知時間列ORDERDATE的數(shù)據(jù)類型為Object、字符型
將ORDERDATE列處理為日期數(shù)據(jù)類型
查看ORDERDATE列的數(shù)據(jù)類型 為'<M8[ns]'
如上圖

第二步:進行數(shù)據(jù)分析

(4)求日期到現(xiàn)在的距離

求日期到現(xiàn)在的距離,并把結(jié)果數(shù)據(jù)放入datediff列中
如上圖

(5)從時間距離中獲得天數(shù)

從時間距離中獲得天數(shù)
如上圖

(6)統(tǒng)計每個用戶距離現(xiàn)在多久沒有消費了,找到最小的最近消費距離

找出最近消費距離數(shù)據(jù)放入r_agg數(shù)據(jù)框中
查看r_agg列的數(shù)據(jù)維度,一共有2列,每列55143行

(7)統(tǒng)計每個用戶交易的總次數(shù),即對訂單數(shù)計數(shù)

找出交易次數(shù)數(shù)據(jù)放入f_agg數(shù)據(jù)框中??
查看f_agg列的數(shù)據(jù)維度,一共有2列,每列55143行

(8)統(tǒng)計每個用戶交易的總金額,即對每次的交易金額求和

找出交易金額數(shù)據(jù)放入m_agg數(shù)據(jù)框中? ??
查看m_agg列的數(shù)據(jù)維度,一共有2列,每列55143行

(9)使用merge函數(shù)把r_agg、f_agg、m_agg三個數(shù)據(jù)框關(guān)聯(lián)起來

把三個數(shù)據(jù)框關(guān)聯(lián)起來并放入aggData數(shù)據(jù)框中
更改aggData數(shù)據(jù)框的列名

FRM=100*R_S+10*F_S+1*M_S

(10)求R_S的得分?

把得分數(shù)據(jù)放入r_s數(shù)據(jù)框中

最近消費距離列(recencyAgg)按照從小到大順序排列,間隔距離越大也就是recencyAgg列的值越大,得分越小

因此,標簽rlabels按照從大到小排列。

(11)求F_S的得分?

把得分數(shù)據(jù)放入f_s數(shù)據(jù)框中

消費頻次列(requencyAgg)的數(shù)據(jù)并未呈正態(tài)分布,所以未使用quantile函數(shù),而是查看數(shù)據(jù)的分布情況按照分布情況的從小到大順序進行排列,消費頻次越大也就是frequencyAgg列的值越大,得分越大

因此,標簽flabels按照從小到大排列。

(12)求M_S的得分

把得分數(shù)據(jù)放入m_s數(shù)據(jù)框中

消費金額列(monetaryAgg)按照從小到大的順序排列,消費金額越大也就是monetaryAgg列的值越大,得分越大

因此,標簽mlabels按照從小到大排列。

(13)將r_s、f_s、m_s添加到數(shù)據(jù)框aggData中

添加到數(shù)據(jù)框aggData中
查看aggData數(shù)據(jù)框中各列的數(shù)據(jù)類型

(14)將r_s、f_s、m_s列數(shù)據(jù)類型轉(zhuǎn)換成數(shù)值型(int),再計算RFM得分


計算RFM得分

(15)為RFM得分添加標簽

為RFM得分添加了標簽并分成了八類,將數(shù)據(jù)放入level數(shù)據(jù)框中


如上圖

(16)對客戶等級列(level)進行分組,按照客戶ID進行計數(shù)統(tǒng)計,并把數(shù)據(jù)放入customerlevels數(shù)據(jù)框中

將分組后的數(shù)據(jù)放入customerlevels數(shù)據(jù)框中
如上圖



結(jié)論:

RFM模型可以對客戶的終生價值做一個合理的預(yù)估,基于一個理想的客戶特征來衡量現(xiàn)實中客戶價值的高低,通過此類分析,定位最有可能成為品牌中式客戶的群體,讓我們把主要精力放在最有價值的用戶身上開展精準營銷。

細分出來的客戶類型分布情況
各類客戶的占比情況



CREATED BY TAO

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容