電商網站263萬筆購買資料之RFM用戶分群(Python)

本文選自2020年某電子產品電商網站,共263萬筆之購買資料進行用戶分析。在探索性資料分析(EDA)當中,我們發現三星與蘋果這兩大品牌分別以34%和30%的占了最大的市場份額。另外用戶的成交時間主要以上午9點到10點之間為最高峰。在RFM分析中,最重要的「重要價值客戶」僅僅佔10%,而最不重要的「一般挽留客戶」則佔了最大宗,達到43%。

Gary Chen
10 min readJul 2, 2024

RFM用戶分群

圖片來源: Cheers快樂工作人

根據 Larry Lien( HubSpot 數位行銷專家)定義,RFM 分析的核心概念是以三個關鍵指標來衡量客戶的價值和忠誠度,分別是:

Recency : 最近一次購買

評估客戶最近一次購買的時間。較短的時間間隔意味著客戶目前與你的關係活躍。

Frequency : 購買頻率

計算客戶在特定時間範圍內的購買次數。購買次數越多,代表客戶對產品或服務的興趣和忠誠度越高。

Monetary : 消費金額

評估客戶在特定時間範圍內的總消費金額。消費金額越高,代表客戶的價值和財力狀況較好。

資料來源

Kaggle資料集: eCommerce purchase history from electronics store

此為2020 年 4 月到 2020 年 11 月間,來自一家大型家電和電子產品網店的購買數據,共263萬3520筆。欄位說明如下:

  • event_time: 每位消費者當下消費時間
  • order_id: 訂單編號
  • product_id: 產品編號
  • category_id: 類別編號
  • category_code: 產品類別(包含平板、手機、筆電以及洗衣機、冰箱等家電,以及五金商品)
  • brand: 品牌名稱
  • price: 產品金額
  • user_id: 使用者編號,由於每位使用者可能不只買一次,所以並非唯一值

資料清洗

刪除重複值

df = df.drop_duplicates()

檢查缺失值

df.isna().sum()

可以觀察到有許多缺失值,尤其在重要的變數如UserID與購買金額的缺失值多,但RFM模型主要會利用該欄位進行用戶分層,無法用統計方法進行填充,因此刪除缺失值之資料。

df = df.dropna(subset = ['user_id','price','brand','category_code'])

檢查異常值

異常值多發生在日期與金額上,因此一併檢查。在此先用describe()函數掃過一遍,發現日期的最小值有"1970–01–01",屬於異常值必須刪除之。

df = df[df['event_time'].dt.year != 1970]

而產品的金額多半集中在$2000美元以下,亦有售價$8000~$10000的商品,然而該資料集包含家電如洗衣機、冰箱、洗碗機等,因此並不算異常值。

經資料清洗後,最後剩下41萬9390筆,共90780位消費者之購買資料進行分析。

探索式資料分析(EDA)

Q:前十大品牌銷售金額排名?

top_10_GMV = df.groupby('brand')['price'].sum().reset_index().sort_values('price', ascending = False).head(10)

2020年,三星(Samsung)以34%的銷售額佔比奪冠! 而第二名的蘋果(Apple)以30%的成績緊追在後。

Q:前十大產品類別銷售金額排名?

top_10_cate = df.groupby('category_code')['price'].sum().reset_index().sort_values('price', ascending = False).head(10)

智慧型手機以46%的銷售佔比穩居第一名! 而筆電僅佔16%落後第二名。

Q:用戶在哪個時段最活躍?

user_purchase_time_GMV = df.groupby(df['event_time'].dt.strftime('%H'))['price'].sum().reset_index()

橫軸代表一天24小時,可觀察到上午9點到上午10點這段時間是購買金額加總後的最高峰,非常有趣! 營運團隊或許可針對該時段推出限時促銷活動。

Q:用戶在哪些月份購買量最高?

主要集中在2020年的下半年,以2020年8月的$26M銷售金額為最高,這也是非常有趣的現象!

RFM模型建立

RFM模型有非常多種變化,有的模型會用四分位數來分類,因此客戶能被分為4³=64種。有的則分為5類,因此有125種組合。本文採用較直觀的二元分類法,即高於或小於平均值。因此客戶能被分為2³= 8種。RFM模型建立如下:

r = df_rfm.groupby('user_id')['days_up_to_now'].min().reset_index() 
f = df_rfm.groupby('user_id')['order_id'].count().reset_index()
m = df_rfm.groupby('user_id')['price'].sum().reset_index()

rfm = r.merge(f, on='user_id').merge(m, on='user_id')
rfm.columns = ['user_id','R','F','M']
rfm

以上我們已經獲得了所有的R, F, M參數,將每個參數根據其均值進行二分類,大於均值則標記為1,小於均值則標記為0。

因此能將用戶分成八大類,其中重要價值客戶(R↑, F↑, M↑)也被稱為最佳客戶(Champions)。Cheers快樂工作人表示 :

"....該用戶能為企業帶來大量價值和貢獻,應持續以特別活動維繫關係。例如:週年慶時推出教練課折扣活動,或是包月會員享有每個月一次免費InBody體脂測量。"

而最低價值的一般挽留客戶(R↓, F↓, M↓):也被稱為冬眠客戶(Hibernating customers)。Cheers快樂工作人表示:

"...R、F、M三項指標皆偏低,表示這些客戶其實已經流失,對企業少有貢獻,需要展開針對性的客戶回流策略。

R (Recency : 最近一次購買)的分布圖:

大部分人最近一次購買在100天內較多,而200天以上反而較少。

F (Frequency : 購買頻率) 的分布圖:

2020年間,大部分人集中在5次內最多,或許是因為3C與家電、五金商品的特性,本身就不會讓人頻繁購買。

M (Monetary : 消費金額)的分布圖:

大部分人花的總金額集中在$500美元以下,極少數人能花到$50000美元以上,呈現相當明顯的右尾分配,這與我之前做過的醫療支出專案、黑五消費專案等的分配都非常接近。

最後將八大類用戶的分佈視覺化:

# 計算總數
total_count = rfm_dist['user_count'].sum()

# 計算百分比並新增到 DataFrame 中
rfm_dist['percentage'] = rfm_dist['user_count'] / total_count * 100

# 繪製條形圖
fig = px.bar(
rfm_dist,
x='user_type',
y='user_count',
text='percentage', # 使用 text 參數來顯示百分比
labels={'percentage': 'Percentage'}, # 設定標籤
color_discrete_sequence=['orange'],
title='RFM分析'
)

# 格式化百分比標籤
fig.update_traces(texttemplate='%{text:.2f}%', textposition='outside')

# 顯示圖表
fig.show()

可以觀察到價值低的「一般挽留客戶」佔比最高,達43%,而最高價值的「重要價值客戶」佔比僅僅為10%。

結論

  1. 三星與蘋果這兩大品牌,分別以34%和30%的占了最大的市場份額。
  2. 用戶的成交時間主要以上午9點到10點之間為最高峰。
  3. 「一般挽留客戶」佔43%為數最多 : 該用戶對企業少有貢獻,需要展開針對性的客戶回流策略,例如在促銷時發送通知,給予一定的優惠券即可,不需要額外的活動支持。
  4. 「重要價值客戶」佔10% : 可以看做VIP客戶,應提供更多的重點關注,傾斜更多資源並定期回訪。制定VIP一對一服務,例如享有免費的贈禮、客製化的問候等等。
  5. 「重要保持客戶」佔2%這些客戶已成為企業的忠實客戶,但最近一次的購買時間比較久遠。應當主動寄發電子郵件,找出他們不再消費的原因,或是否在其他地方找到更好的選擇等等,做為日後持續改善的根據。又或者通過email推送打折與促銷訊息,藉此喚回該用戶。
  6. 「一般發展客戶」佔27% : 也被稱為新客戶(New customers),即最近剛開始購買產品或服務,尚未替企業帶來太多價值或貢獻,但這代表了網站有著不錯的拉新效果,可以頻繁發放優惠券刺激消費。

參考資料

  1. 范仕仰(2023),「如何找出你的VIP客群?RFM模型幫你做好分眾行銷的第一步」, Cheers快樂工作人
  2. Larry Lien(2024), 「RFM 模型這樣用 (Recency、Frequency、Monetary):客戶真實價值的關鍵密碼」, Learning Hub
  3. Ron Kohavi(2004), "Visualizing RFM Segmentation", Stanford Artificial Intelligence Laboratory

--

--

No responses yet