原來用Python實作行銷RFM model,可以那麼簡單!-【附Python程式碼】

行銷資料科學
Marketingdatascience
11 min readOct 5, 2019

先前的文章「常貴客?新客? 讓RFM模型簡簡單單解釋一切!(附實現程式碼)」,得到廣大的回響,甚至受到許多公司的參考及採用,非常謝謝您的肯定。

而在RFM Model的課程中,有學員提到,公司也想導入RFM,並且要以Python進行編寫,因為上述文章是以R語言為基礎,而目前市面上並沒有以Python實作RFM的程式碼,因此本文以Python為主要語言進行RFM實作。在開始程式編即之前,就讓我們來解析資料內容。

利用python實作出RFM model

資料欄位

RFM存在至今已過半百,為何大家仍想要引進呢?

因為RFM只需要基本的銷售資料,就能做出強大的顧客分群,等同於市場區隔(Segmentation),且邏輯清晰明瞭。一般的CRM資料一定有有購買者ID、銷售ID、購買時間、購買金額,這麼少的欄位若要進行機器學習其實誤差值是非常大的,這時候RFM就派上用場了,因此本按例就預設以最少的資料欄位進行分析。

以下資料為單一顧客的購買數據,是一般銷售數據經過整理後所得的,欄位recency、frequency、recency_cate、frequency_cate是利用orderdate計算出來的,引此嚴格來說這筆資料只有三個欄位,竟然就能做出RFM!

  1. clientId:顧客編號。
  2. orderdate:顧客最後一次來購買的日期
  3. recency(近因):上一次購買與今天相差天數。
  4. gender:性別。人口變數資料,有的話更能細部分析顧客類群。
  5. frequency(頻率):從顧客第一次來開始,到目前共來過幾次。
  6. recency_cate:近因天數。
  7. frequency_cate:頻率天數。
  8. 購買量:該顧客的總購買量。

在開始實作之前,您必須要學會

Python中文顯示

範例資料中含有中文,而Python繪圖並不支援中文字。您可以參考先前文章「解決Python 3 Matplotlib與Seaborn視覺化套件中文顯示問題」,否則若您的資料或圖表中有中文,會出現如下圖情況。當然若要將其資料全部換為英文的話也可輸出,但基於一般在華人區域的CRM資料難免有中文出現,因此建議進行此修改。

中文全部為亂碼

FacetGrid繪圖

這是此實作最重要的基礎來源。FacetGrid是Seaborn繪圖套件下的一個繪圖類別,其與一般圖表的差異在於,能夠集合多張圖表於一身,進行多為度的比較,而這正符合三個、甚至多個維度的RFM分析,且配色精美,詳請可見官方文件

可以先複製以下的程式碼進行試驗,利用官方提供的資料集,了解其繪圖的原理。其中可以看到FacetGrid的使用方法,分為整體圖與小圖,FacetGrid方法控制整張圖的資料來源、內容,而小圖譬如說如上圖的左邊一塊,其中的長條圖、顏色、標籤等,利用FacetGrid繪圖主要會分成這兩塊。

整體圖:sns.FacetGrid(資料來源, col=想分析欄位)

小圖:map(小圖表示方式, 小圖示名稱)

tips資料集
import matplotlib.pyplot as plt
import seaborn as sns
thetips= sns.load_dataset("tips")
g = sns.FacetGrid(thetips, col="time")
g.map(plt.hist, "tip")

用Python實作RFM

基於以上的基礎,並以FacetGrid的特性,開發出6 X 6的RFM Model。最主要的兩個欄位是recency_cate與frequency_cate,分別控制資料在RFM圖形中的位置,因此只要資料調整到定位,可以簡單利用FacetGrid產出圖片。

比較需要注意的地方在於row_order的參數是給予frequency_label[::-1],這意思是將陣列frequency_label相反輸出,其原因在於FacetGrid的圖形排列是由左上角開始排列的,對應到frequency的「>5 freq」,因此必須將整個鎮列倒著放。

recency_label =  ['0-7 day', '8-15 day', '16-22 day', '23-30 day', '31-55 day', '>55 day']frequency_label =  ['1 freq', '2 freq', '3 freq', '4 freq', '5 freq', '>5 freq']g = sns.FacetGrid(purchase_list, # 來源資料表
col="recency_cate", # X資料來源欄位
row="frequency_cate" , # Y資料來源欄位
col_order= recency_label, # X資料順序
row_order= frequency_label[::-1], # Y資料順序
margin_titles=True
)#小圖表部分

小圖示中是以gender(性別)來作為分類,此能依照您不同的資料欄位調整,但建議該欄位的項目不要太多,否則會造成視覺的凌亂,反而失去了RFM Model一目瞭然的意義。

在此範例中只有gender是人口變數,若您的資料有更多相關變數(例如:地址、學歷、家庭等),RFM的分析將會更有意思。

g = g.map_dataframe(sns.barplot, # 資料顯示的模式
x= 'gender', # 小圖表X資料來源
y ='購買量', # 小圖表Y資料來源
palette = sns.color_palette("muted")) #畫布色調
g = g.set_axis_labels('光顧天數','購買頻率').add_legend()

這個RFM還是美中不足:

相信您實作完也感覺到,這個圖形用來自己分析還可以,若要報告給主管或老闆聽,絕對是不合格的,如以下幾點:

  1. 無法看出顧客分類:無法一目瞭然的找出常貴客、量販客、先前客、一次客。
  2. XY軸的標籤:重複「光顧天數」、「購買頻率」,最完美的展現方式是只有一個,並且置中表示。
  3. 小圖示XY軸標籤:顯示「0-7天」或者「1 freq」的標籤,人們視覺上是習慣放在左方與下方,這正好與我們的習慣相反了。
  4. 小圖示調整:小圖示內的棒狀圖無法做調整,譬如想要調整刻度。

那就來學

RFM 客製化,打造自己的CRM說書人

即將推出文章,敬請期待。

想知道更多RFM實戰技法嗎?

💻 TMR最新行銷資料科學課程募資開始:

顧客分類大師:Python x RFM 會員經營新觀點
👉 購買抽1小時💥行銷資料科學顧問💥諮詢
💰 募資價:1,988元 (原價:2,388元)
🕒 募資開跑:5/6 12:00
🎯 主流程式語言 Python ft. 實用 RFM 顧客 Model
本課程教您輕鬆分類顧客群,找出不同樣貌的顧客並進一步找出顧客帶來的更高獲利:
👫 可遇不可求的【常貴客】
👫 不知不覺離開的【流失客】
👫 一次購買超大量的【量販客】
👫 具有購買潛力的【新客】
🛒 點我購買

程式碼:

作者:楊超霆(臺灣行銷研究有限公司 資深資料科學家)

歡迎加入我們的telegram獲取即時訊息!https://t.me/marketingdatascience

您可能有興趣:

💻 好學校熱賣暢銷的線上課程:

1. Python 0到1 基礎商業數據分析實戰
💥 原價:3,188
🕒 課程總時數:453分鐘(7小時33分鐘)
👉 從0開始:手把手從頭學習,適合完全沒學過的學員
👉 商業應用全台最多:傳授市面上少見的Python實務應用
👉 網路輿情爬蟲演練:網路輿情商務爬蟲技法
👉 競品分析:競爭價值定位圖找出藍海策略
👉 貨架陳列視覺化:解析行銷策略及廣告預算配置方法
🛒 手刀點我購買

2. AI 行銷學:用 Python 機器學習創造商業新價值
💥 原價:3,888
🕒 課程總時數:701分鐘(11小時41分鐘)
👉 全台第一門Python機器學習線上課程
👉 教導你快速理解Logistic Regression, XGBoost, Random Forest商務機器學習模型。
👉 建構老闆或主管們看得懂的模型評估指標,讓精準行銷方案更容易被接受且推出
👉 如何利用機器學習找出消費者心中的重要變數及客樣貌與特徵,做到個體及總體的商品推薦?
👉 如何從數以萬計的消費資料中偵測可能的詐欺名單?
🛒 手刀點我購買

3. 用 Python 打造自己的股票小秘書
💥 原價:4,288 (現省400)
🕒 課程總時數:708分鐘(11小時48分鐘)
👉 打造自動推播機器人,趁著股市最近低迷,找出最適進場點
👉 「到價提醒」功能,大大提升投資便利性
👉 了解Python雲端服務架構,完整的專案流程
👉 孰悉No SQL資料庫操作,未來大數據的基礎
🛒 手刀點我購買

好學校企業百大課程之一:

4. 台科 EMBA 年年爆滿的一門 Word 課(A系列)
💥 原價:950
👉 系統性學習Office軟體功能,教您別人不知道的快捷鍵
👉 調整不受控制的行距與精準對齊排版
👉 一鍵轉換Word到Excel
👉 有效率處理企畫書、畢業論文、小組報告、公文等
🛒 手刀點我購買

5. 台科 EMBA 年年爆滿的一門 Word 課(B+C系列)
💥 原價:1,050
👉 傳授獨家快捷鍵字典
👉 分享好用的大綱模式,讓文章處理更有效率
👉 建立大綱模式、多層次清單、目錄與圖表目錄,掌握文件編輯規則
👉 優化文章的邏輯架構
🛒 手刀點我購買

2020課程地圖

💪 點我看更多

🤵 實體課程:

👉 商務中階:

【RFM週末班-顧客分類大師】5/9 (六) ~ 10 (日)
🔥 用Python 打造客群地圖,走向獲利最大化
💪 點我看課程資訊

【RFM週間班-會員分析戰情室】5/20 (三) ~ 6/24 (三)
🔥 新增動態視覺化互動網頁&顧客樣貌價值深度探索
💪 點我看課程資訊

👉 商務中高階:

【Python機器學習商務實戰】5/16 (六) ~ 6/17 (日)
🔥 新增動態視覺化互動網頁&顧客樣貌價值深度探索
💪 點我看課程資訊

📘 精選好書:

🏆 國內第一本行銷資料科學專書

💪 點我看書本資訊

🏆國內第一本「股票小祕書」專書

附上購書網址~ 國外的朋友也可以使用博客來與金石堂的通路轉運到國外哦!

  1. 天瓏書局:http://bit.ly/stock-secretaryBot
  2. 博客來:https://www.books.com.tw/products/0010833772

--

--

行銷資料科學
Marketingdatascience

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR