為自己Coding
為自己Coding

YO~~ 剛跨入AI人工智慧領域的小小工程師, 熱愛自學, 熱愛分享, 下班後的我想為自己Coding, 積極撰寫教學文, 想將自學的程式知識分享給大家, 不斷追求進步的自己, 希望有一天能回饋社會,幫助需要幫助的人, 如果您有什麼很酷的想法,也覺得我還行,歡迎您找我合作~~ IG: https://www.instagram.com/coding_4_me/

Python資料分析X行銷科學-RFM模型-用數據創造自己的公司客戶分群-一步步教學實作(二)


Github完整程式

嗨嗨,我又來了,上一篇分享了如何一步一步將顧客購買資料,利用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:

原來用Python實作行銷RFM model,可以那麼簡單!-【附Python程式碼】
先前的文章「常貴客?新客? 讓RFM模型簡簡單單解釋一切!(附實現程式碼)」,得到廣大的回響,甚至受到許多公司的參考及採用,非常謝謝您的肯定。medium.com

使用seaborn强大的调色能力_我是小蚂蚁-CSDN博客_sns调色
seaborn 还拥有强大的调色能力,并且操作简单 使用调色板的方法 seaborn.color_palette(palette=None, n_colors=None, desat=None) Return a list of…blog.csdn.net

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…
加载中…

发布评论