Python學習筆記-3群18組-杜杜狼-2017.7.27

Lesson 33 RFM分析

根據客戶活躍程度和交易金額貢獻,進行客戶價值細分的方法
R(Recency)近度: 客戶最近一次交易時間的間隔;R越大,表示客戶越久沒發(fā)生過交易;
F(Frequency)頻度:客戶在最近一段時間內交易的次數;F越大,表示客戶交易越頻繁
M(Monetary)額度:客戶在最近一段時間內交易的金額;M越大,表示客戶價值越高

RFM分析過程

  • 計算RFM各項分值
    R_S 距離當前日期越近,得分越高,最高5分,最低1分
    F_S 交易頻率越高,得分越高,最高5分,最低1分
    M_S 交易金額越高,得分越高,最高5分,最低1分
  • 匯總RFM分值
    RMF = 100 * R_S + 10 * F_S + 1 * M_S
  • 根據RFM 分值對客戶分類

RFM分析前提

  • 最近有過交易行為的客戶,再次發(fā)生交易的可能性要高于最近沒有交易行為的客戶
  • 交易頻率較高的客戶比交易頻率較低的客戶,更有可能再次發(fā)生交易行為
  • 過去所有交易總金額較多的客戶,比交易總金額較少的客戶,更有消費積極性

常規(guī)RFM數據格式

OrderID CustomerID DealDateTime Sales
訂單編號 客戶編號 交易時間 交易金額
#對R, F, M進行聚合運算
#R_Agg用的是Python 3寫法,否則有warning
R_Agg = data.groupby(
    by=['CustomerID']
)['DateDiff'].agg(numpy.min).rename('amin': 'RecencyAgg')

F_Agg = data.groupby(
    by=['CustomerID']
)['OrderID'].agg({
    'FrequencyAgg': numpy.size
})

M_Agg = data.groupby(
    by=['CustomerID']
)['Sales'].agg({
    'MonetaryAgg': numpy.sum
})

#把聚合后的結果匯總進一張表
aggData = R_Agg.join(F_Agg).join(M_Agg)

#對R, M, F score利用正態(tài)分布分組,都是分成五組
bins = aggData.RecencyAgg.quantile(
    q=[0, 0.2, 0.4, 0.6, 0.8, 1],
    interpolation='nearest'
)
#避免最小值不閉合的錯誤
bins[0] = 0
labels = [5, 4, 3, 2, 1]
R_S = pandas.cut(
    aggData.RecencyAgg, 
    bins, labels=labels
)

bins = aggData.FrequencyAgg.quantile(
    q=[0, 0.2, 0.4, 0.6, 0.8, 1],
    interpolation='nearest'
)
bins[0] = 0;
labels = [1, 2, 3, 4, 5];
F_S = pandas.cut(
    aggData.FrequencyAgg, 
    bins, labels=labels
)

bins = aggData.MonetaryAgg.quantile(
    q=[0, 0.2, 0.4, 0.6, 0.8, 1],
    interpolation='nearest'
)
bins[0] = 0
labels = [1, 2, 3, 4, 5]
M_S = pandas.cut(
    aggData.MonetaryAgg, 
    bins, labels=labels
)

#根據行業(yè)專家給出的經驗公式,計算RFM得分
aggData['RFM'] = 100*R_S.astype(int) + 10*F_S.astype(int) + 1*M_S.astype(int)

/*按照RMF對用戶類型的劃分,將所有用戶分成8類:
高價值客戶,重點保持客戶,重點發(fā)展客戶,重點挽留客戶,
一般價值客戶,一般保持客戶,一般發(fā)展客戶,潛在客戶*/
bins = aggData.RFM.quantile(
    q=[
        0, 0.125, 0.25, 0.375, 0.5, 
        0.625, 0.75, 0.875, 1
    ],
    interpolation='nearest'
)
bins[0] = 0
labels = [1, 2, 3, 4, 5, 6, 7, 8]
aggData['level'] = pandas.cut(
    aggData.RFM, 
    bins, labels=labels
)

Lesson 34 矩陣分析

根據事物(如產品,服務等)的兩個重要屬性(指標)作為分析的依據,進行關聯分析,找出解決問題的一種分析方法
matplotlib相關問題后續(xù)學習

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

相關閱讀更多精彩內容

  • 基本統(tǒng)計 基本統(tǒng)計分析,也叫描述性統(tǒng)計分析,用來概括事物整體狀況以及事物間聯系(即事物的基本特征),以發(fā)現其內在規(guī)...
    WesleyLien閱讀 2,253評論 0 1
  • 1、基本統(tǒng)計 基本統(tǒng)計分析:描述性統(tǒng)計分析,用來概括事物整體狀況以及事物間聯系(即事物的基本特征),以發(fā)現其內在規(guī)...
    AIhenry從入門到放棄閱讀 1,495評論 0 0
  • [TOC] 第五章 課時27 基本統(tǒng)計 計數、求和、均值、方差etc 參考excel透視表中對應的一些計算方法 課...
    DrBear_smile閱讀 280評論 0 0
  • 導語: 如果你已經加入了iOS攻城獅隊伍,那么我們由衷地祝賀您正式成為一名終身學習的程序猿;有人覺得這句話...
    超人猿閱讀 2,546評論 3 19
  • 在我們應用開發(fā)中,用戶在手機上點開我們的應用,從手指點擊到我們的應用圖標到我們的應用真正啟動是需要一段時間的,隨著...
    張囧瑞閱讀 7,253評論 10 6

友情鏈接更多精彩內容