本篇教你如何輕鬆運用PYTHON讓你找到專屬的VIP客戶---第二篇

更新 發佈閱讀 7 分鐘

上一篇我們把消費次數、消費金額、最近一次的購買的距離天數,的資料整理完成後,我們要來將上面的資料分別轉為5個級距。

收先我們須要找出消費次數、消費金額、最近一次的購買的距離天數的最大值,並將數值列印出來。如圖1

customer_recency_max = customer_summary['最近一次的下單天數'].max()
customer_Frequency_max = customer_summary['消費次數'].max()
customer_Sales_max = customer_summary['消費總金額'].max()
print("最大的下單天數:", customer_recency_max)
print("最大的消費次數:", customer_Frequency_max)
print("最大的消費金額:", customer_Sales_max)
圖1

圖1

再根據找出的最大值去分成5個級距,r_bins 填入分類資料的數值區間,r_labels填入對應的級距,以下面的程式碼舉例:如果最近一次的下單天數為"19天",那就會被分為第5級,如果天數為"22天"就會被分為第4級,以此類推,其他的消費次數跟消費總金額也是一樣的方式去做分類。並將結果儲存到新增的R、F、M欄位。

r_bins = [0, 19, 38, 57, 76, 95]
r_labels = ['5', '4', '3', '2', '1']
customer_summary['R'] = pd.cut(customer_summary['最近一次的下單天數'], bins=r_bins, labels=r_labels)

f_bins = [0,1,2,3,4,5]
f_labels = ['1', '2', '3', '4', '5']
customer_summary['F'] = pd.cut(customer_summary['消費次數'], bins=f_bins, labels=f_labels)

m_bins = [0,500,1000,2000,3000,14055]
m_labels = ['1', '2', '3', '4', '5']
customer_summary['M'] = pd.cut(customer_summary['消費總金額'],bins=m_bins, labels=m_labels)

分類完成後再將R、F、M的值轉成數值

customer_summary['R'] = customer_summary['R'].astype(int)
customer_summary['F'] = customer_summary['F'].astype(int)
customer_summary['M'] = customer_summary['M'].astype(int)

再來就是將每個客戶的RFM分成下面8種類型的客戶
1.RFM分數-高高高-重要價值客戶
2.RFM分數-低高高-重要保持客戶
3.RFM分數-高低高-重要發展客戶
4.RFM分數-高低低-一般發展客戶(新客戶)
5.RFM分數-低低高-重要挽留客戶
6.RFM分數-高高低-一般價值客戶
7.RFM分數-低高低-一般保持客戶
8.RFM分數-低低低-一般挽留客戶

根據上面的分數來寫一個顧客分類函數,這邊我是用第3級作為判斷的依據,
大於3就是屬於高,低於3就是屬於低
舉例:'R'、'F'、'M'欄的分數都大於3就歸類為【重要價值客戶】,以此類推

最後再新增一欄顧客類別,將對應的顧客類別新增到相對應的客戶ID,並儲存成EXCEL

# 定義顧客分類函數
def classify_customer(row):
    if row['R'] >= 3 and row['F'] >= 3 and row['M'] >= 3:
        return '重要價值客戶'
    elif row['R'] <= 3 and row['F'] >= 3 and row['M'] >= 3:
        return '重要保持客戶'
    elif row['R'] >= 3 and row['F'] <= 3 and row['M'] >= 3:
        return '重要發展客戶'
    elif row['R'] >= 3 and row['F'] <= 3 and row['M'] <= 3:
        return '一般發展客戶(新客戶)'
    elif row['R'] <= 3 and row['F'] <= 3 and row['M'] >= 3:
        return '重要挽留客戶'
    elif row['R'] >= 3 and row['F'] >= 3 and row['M'] <= 3:
        return '一般價值客戶'
    elif row['R'] <= 3 and row['F'] >= 3 and row['M'] <= 3:
        return '一般保持客戶'
    elif row['R'] <= 3 and row['F'] <= 3 and row['M'] <= 3:
        return '一般挽留客戶'
    else:
        return '其他'



# 新增一列 '顧客類別'
customer_summary['顧客類別'] = customer_summary.apply(classify_customer, axis=1)
# 將計算結果寫入 Excel 檔案
customer_summary.to_excel('RFM分析.xlsx', index=False)

下面為EXCEL的顯示畫面

圖二

圖二

下一篇會教如何將消費次數、消費金額、最近一次的購買的距離天數,做成圖表


留言
avatar-img
Daniel Huang的沙龍
0會員
2內容數
這邊會放有關於數據分析、流程自動化、python相關的文章,希望可以幫助到上班族、零售業、中小企業、電商,讓你們在工作上更有效率
你可能也想看
Thumbnail
這道題你一定會解,但你知道怎麼把迴圈改寫成「迭代」嗎?這招學起來!
Thumbnail
這道題你一定會解,但你知道怎麼把迴圈改寫成「迭代」嗎?這招學起來!
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
題目敘述 題目會給我們一張Activity資料表,裡面分別有user_id、 session_id、activity_date 、activity_type等欄位。 要求我們列出所有過去30天的活躍使用者。 活躍使用者的定義為2019-07-27包含這天,往前三十天的區間內,至少有過一次活動紀錄
Thumbnail
題目敘述 題目會給我們一張Activity資料表,裡面分別有user_id、 session_id、activity_date 、activity_type等欄位。 要求我們列出所有過去30天的活躍使用者。 活躍使用者的定義為2019-07-27包含這天,往前三十天的區間內,至少有過一次活動紀錄
Thumbnail
以一個雜魚測試工程師的角度來看int應用場景
Thumbnail
以一個雜魚測試工程師的角度來看int應用場景
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
sort reverse count index copy len min max sum any all
Thumbnail
sort reverse count index copy len min max sum any all
Thumbnail
題目敘述 題目會給我們一張Customer資料表,裡面分別有id、name、referee_id 等欄位,其中id 是主鍵Primary Key。 要求我們列出所有推薦人ID referee_id不等於2的顧客,印出順序不拘。
Thumbnail
題目敘述 題目會給我們一張Customer資料表,裡面分別有id、name、referee_id 等欄位,其中id 是主鍵Primary Key。 要求我們列出所有推薦人ID referee_id不等於2的顧客,印出順序不拘。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News