YO~~ 剛跨入AI人工智慧領域的小小工程師, 熱愛自學, 熱愛分享, 下班後的我想為自己Coding, 積極撰寫教學文, 想將自學的程式知識分享給大家, 不斷追求進步的自己, 希望有一天能回饋社會,幫助需要幫助的人, 如果您有什麼很酷的想法,也覺得我還行,歡迎您找我合作~~ IG: https://www.instagram.com/coding_4_me/
Python資料分析X行銷科學-RFM模型-用數據創造自己的公司客戶分群-一步步教學實作(二)
嗨嗨,我又來了,上一篇分享了如何一步一步將顧客購買資料,利用RFM Model計算後,轉化為顧客分群資料,那接下來我們還可以做什麼呢? 我們有了數據後,當然就是要將數據視覺化,才能在主管面前好好地給它報告起來,,那廢話不多說,我們開始吧
方法一: 我們可以看看這RFM Model三個指維度,我們的數據是如何呈現的
Step 1: 導入數據
導入上一篇建立好RFM模型的數據,也就是上一篇最後的產出csv檔
## import package import pandas as pd ## load in the data and transform to DataFrame data_visual_df = pd.read_csv(“RFM_Model_Result.csv”) ## show the data data_visual_df
Step 2 : 3D圖建立
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D x = data_visual_df[“Recency_Level”].values.tolist() y = data_visual_df[“Frequency_Level”].values.tolist() z = data_visual_df[“Monetary”].values.tolist() fig = plt.figure(figsize=(10, 10)) ## 建立3D圖 ax = plt.subplot(projection=’3d’) ## 將數據畫上 ax.scatter(x, y, z, c=’b’) ## 設定座標軸名稱 ax.set_zlabel(‘Recency’) ax.set_ylabel(‘Frequency’) ax.set_xlabel(‘Monetary’) plt.show() plt.close()
可視化結果:
當然這只是Demo用的,所以數據點不多喔!! 每個點代表一位顧客,可以看出他與這些維度的關聯
有了這張圖,我們可以清楚看出我們的顧客數據分散在維度中,比較偏向哪些指標,也就可以跟老闆解釋,我們的顧客族群,比較屬於哪類的顧客
方法二: 看兩個指標,對顧客屬性的影響
a. 你手邊的顧客數據,擁有的屬性越多,能做出更多樣的組合喔
Step 1: 導入數據
## 導入上一篇建立好RFM模型的數據,也就是上一篇最後的產出csv檔 ## import package import pandas as pd ## load in the data and transform to DataFrame data_visual_df = pd.read_csv(“RFM_Model_Result.csv”) ## show the data data_visual_df
Step2 : 可視化
我這邊就分別展示使用Recency_Level和Frequency_Level當維度對顧客年齡層與性別的影響,當然你也可以自己任意配置想要呈現的數據圖
## impot package import matplotlib.pyplot as plt import seaborn as sns sns.relplot(x=”Recency_Level”, y=”Frequency_Level”, hue=”Age”, data=data_visual_df) sns.relplot(x=”Recency_Level”, y=”Frequency_Level”, hue=”Gender”, data=data_visual_df)
方法三: FacetGrid
a. 我們使用FacetGrid這個方法,快速的製圖
b. 視覺化圖片由一個大圖裡面包含很多小圖
## Step 1: 導入數據 ## 導入上一篇建立好RFM模型的數據,也就是上一篇最後的產出csv檔 ## import package import pandas as pd ## load in the data and transform to DataFrame data_visual_df = pd.read_csv(“RFM_Model_Result.csv”) ## show the data data_visual_df
Step 2: 導入畫圖的套件
小筆記: 由於我們的圖會有用到中文字的地方,所以我們要先設定讓中文能顯示在圖上
## impot package import matplotlib.pyplot as plt import seaborn as sns ## 允許顯示中文設定 sns.set(font=’sans-serif’) sns.set_style(“whitegrid”, {“font.sans-serif”:[“Microsoft JhengHei”]})
Step 3: 製作大圖
a. 大圖表的X軸與Y軸, 我這邊是設定指標消費頻率(Frequency)為x軸,指標上一次消費距離今天天數(Recency)為Y軸
b. 大家可以根據自己的需求設定X軸與Y軸分別為何
c. 要切成幾組呢? 我是根據如下的圖表進行切組,切成五組
小筆記: 我們需要使用到的欄位數據? 就是我們上一篇切好的指標有1~5數值的欄位喔,分別為Recency_Level, Frequency_Level, Monetary_Level,當然也可以手動進去幫這五個值賦予意義,這樣圖片就能更一目了然
## 建立大圖 data_visual = sns.FacetGrid(data_visual_df, col = “Frequency_Level”, ## 行, X軸 row = “Recency_Level”, ## 列, Y軸 #size =4, #aspect = 0.5, margin_titles = True) ## Step 4: 製作小圖 ## a. 我這邊想分析年齡層與消費總額的圖,大家可以根據自己的需求更改, 像是你鄉分析性別與消費總額等, 只咬顧客資料收的越多,可以組合出來的圖也越多,像是可以收學歷、年薪、身高、體重等 ## b. 顏色可以從 deep’, ‘muted’, ‘pastel’, ‘bright’, ‘dark’, ‘colorblind’裡面做更換喔,或是可以自己查詢更多搭配方式 ## c. 圖形也可以畫成散點圖跟折線圖喔!! 將sns.barplot 改成plt.scatter或 plt.plot, 然後把palette = sns.color_palette(“deep”)拿掉,就可以囉 # ## 建立小圖 data_visual = data_visual.map(sns.barplot, # 圖形選擇 plt.scatter plt.plot ‘Age’, # 小圖表X資料來源 ‘Monetary’, # 小圖表Y資料來源 ## 顏色調整 palette = sns.color_palette(“deep”) ## [‘deep’, ‘muted’, ‘pastel’, ‘bright’, ‘dark’, ‘colorblind’] ) ## 設定小圖X軸、Y軸名稱 data_visual = data_visual.set_axis_labels(‘年齡層’,’平均消費總額’).add_legend()
可視化結果
因為這是Demo用的資料,顧客資料不夠多,所以圖片資料沒有很豐富,大家可以開始拿手邊的資料play play看,一定能比我的看起來豐富喔!!
也可以自己試試各種其他組合喔,像是如圖:
上面這個圖的程式我放在這裡喔:
## 資料視覺化 ## import package import pandas as pd ## load in the data and transform to DataFrame data_visual_df = pd.read_csv(“RFM_Model_Result.csv”) ## show the data data_visual_df ## impot package import matplotlib.pyplot as plt import seaborn as sns ## 允許顯示中文設定 sns.set(font=’sans-serif’) sns.set_style(“whitegrid”, {“font.sans-serif”:[“Microsoft JhengHei”]}) sns.set(rc={ ‘figure.facecolor’:’cornflowerblue’}) ## 建立大圖 data_visual = sns.FacetGrid(data_visual_df, col = “Frequency_Level”, ## 行, X軸 row = “Recency_Level”, ## 列, Y軸 #size =4, #aspect = 0.5, margin_titles = True) # ## 建立小圖 data_visual = data_visual.map(sns.barplot, # 圖形選擇 plt.scatter ‘Gender’, # 小圖表X資料來源 ‘Monetary’, # 小圖表Y資料來源 ## 顏色調整 palette = sns.color_palette(“deep”) ## [‘deep’, ‘muted’, ‘pastel’, ‘bright’, ‘dark’, ‘colorblind’] ) ## 設定小圖X軸、Y軸名稱 data_visual = data_visual.set_axis_labels(‘Gender’,’Monetary’).add_legend()
視覺化的方法,根據不同需求,也會有很多不同的方法,只要將RFM Model計算完成,就可以用各種工具視覺化,像是Python、R或Excel等, 希望對大家有很大的幫助!!
Reference:
喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。
发布评论…