將會員消費記錄創造出商業價值?-彙整資料視覺化所需的基本元素-系列3(附Python程式碼)
歡迎回來「行銷活動效益知多少?顧客回購了嗎?」系列的第三篇文章,本篇文章要跟大家分享如何將「會員消費紀錄資料庫」彙整出後續「資料視覺化」所會使用到的基本元素,雖然稱作是「基本元素」,不過此處的基本元素是從資料庫中萃取出來的精華呢!
前情提要:
在本系列一開始到第二篇文章為止跟大家分享了資料前處理的重要性以及如何在複雜的資料中取出關鍵資料,然後如何將關鍵資料內容建立成一個會員消費紀錄資料庫。
接下來我們就趕緊開始本篇文章的主要內容吧!
若是您還沒有看過系列1、2的文章,可以先回顧一下哦~
行銷活動效益知多少?顧客回購了嗎?-取出關鍵資料-系列 1
行銷活動效益知多少?顧客回購了嗎? -建立會員消費紀錄資料庫-系列 2
一、彙整資料清單
首先,我們需從消費紀錄資料庫中去比對時間後,然後建立2018年1~12月的會員消費資料,並且把每個月份的資料彙整成一個清單,如程式碼1所示。
程式碼1:
# 分類好每個月的資料(哪個會員在第幾個月因為甚麼廣告而購買、第幾次購買)final_2018 = []# 從1月開始蒐集for mon in range(len(original_2018)):# 建立存取【會員】、【廣告代號】、【第幾次購買】之串列original_2018_id = []original_2018_ad = []original_2018_count =[]# 每個會員編號都跑一次 i:不同會員編號 舉例:會員10071970for i in customer_record.keys() :# 舉例:會員10071970 在2018年購買系列1的所有消費紀錄for j in customer_record[i].values() :# 消費紀錄中若開頭為蒐集的該月份則執行下方程式if j.startswith(str(mon+1)+'月'):# 存取該會員編號 舉例:10071970original_2018_id.append(i)print('會員編號:',i)# 存取其廣告代號 舉例:1月_GINEPoriginal_2018_ad.append(j)print('廣告代號:',j)# 存取會員在這筆消費紀錄中是第幾次購買舉例:'1'original_2018_count.append(list (customer_record[i].keys()) [list (customer_record[i].values()).index (j)])print('第幾次購買:',list (customer_record[i].keys()) [list (customer_record[i].values()).index (j)])# 建立DataFrameoriginal_2018_df = pd.DataFrame({'會員':original_2018_id,'廣告代號':original_2018_ad,'第幾次購買':original_2018_count})# 存放到分類12個月的串列之中final_2018.append(original_2018_df)
產出:
將會員消費紀錄資料庫的內容按照每個月份彙整內容,如圖1所示。
如果想查看該月份的資料,一樣可以從月份資料清單中點擊不同月份,下圖同樣以6月份的資料做範例,可以比對一下上一篇文章【行銷活動效益知多少?顧客回購了嗎? -建立會員消費紀錄資料庫-系列2】圖2的內容,我們留下了「會員」、「廣告代號」兩個欄位,同時也新增了「第幾次購買」欄位。
"到目前為止是不是覺得還少了些甚麼呢?"
沒錯!就是少了最重要的元素「利潤」!因此下一個步驟就是要將每筆訂單資料的利潤補上去,使繪圖的資料更加完整。
二、調整資料清單
要怎麼把利潤對應到相符合的訂單資料呢?為了更好釐清以下的步驟,我們用一個例子舉例:
下列有兩份不同的月份資料清單,原本就有利潤欄位的命名為「original_2018」,其中6月的DataFrame則稱作「original_2018–6」,另一個即將要新增利潤欄位的清單名為「final_2018」,其中6月的DataFrame稱作「final_2018–6」。
首先,將original _2018–6中的「廣告代號」項目中的名稱都加上「月份_」在最前面,並且把會員欄位的項目從integer型態轉到string型態,成功完成上述兩項之後,之後檢查original_2018–6(圖12)與final_2018–6(圖11)中的「廣告代號」形式與「會員」形式是否相同。
清單中總共有12個月,我們將使用for迴圈把每個月份都經由上方的方式處理一次,如程式碼2所示。程式碼的產出也是會以清單的方式呈現。
程式碼2:
# 目的:為了跟final_2018去做merge# 補上月份for i in range(len(original_2018)):original_2018[i]['廣告代號'] = str(i+1) + '月_' + original_2018[i]['廣告代號']# 目的:使original_2018 和 final_2018 的會員欄位內容「type」相同# 將original_2018中的會員轉成stringfor i in range(len(original_2018)):original_2018[i]['會員'] = original_2018[i]['會員'].astype(str)print(str(i+1)+'月check!' )
產出:
已在廣告代號欄位補上月份以及轉換完會員欄位型態過後的「original_2018」,如圖3所示。
可再點擊清單中的項目查看資料內容,詳細檢查是否執行成功,如圖4所示。
檢查完畢後,接下來就把original_2018的利潤欄位使用merge的方式加到final_2018上,如程式碼3所示。
程式碼3:
# 目的:final_2018 1~12月的資料補上相對應的利潤for i in range(len(final_2018)) :# 將original_2018數據中的利潤 依照【會員&廣告代號】去merge到 final_2018上final_2018[i] = final_2018[i].merge(original_2018[i], how='inner', left_on=['會員', '廣告代號'], right_on=['會員', '廣告代號'])# 刪除重複merge到的錯誤final_2018[i] = final_2018[i].drop_duplicates(subset=['訂單時間'])final_2018[i] = final_2018[i].reset_index(drop = True)del final_2018[i]['訂單時間']del final_2018[i]['系列']
產出:
成功與「original_2018」merge後的「final_2018」內容,如圖5所示。
將圖5和圖1比較後,可以看見每個月的資料都新增了利潤欄位。
恭喜各位完成了資料前處理的階段,不過本系列的重頭戲即將在後面登場,也就是「視覺化繪圖」階段以及如何從圖中判斷出甚麼樣的「管理意涵」。
想要知道如何將資料視覺化嗎?
想要知道分析資料視覺化的成果後能帶給公司什麼樣的關鍵消息嗎?
想要知道更多的後續內容嗎?
讓我們繼續看下去!
下一篇文章將會跟各位介紹繪圖想法的說明以及說明繪圖過程的程式碼架構,繼續跟大家分享如何取出資訊中精華中的精華來繪圖!
請點擊下方系列文章連結了解更多!
Thinking smarter makes you work smarter
如果你喜歡我的文章的話,請給我一點拍手~
如果你覺得喜歡又實用的話,請給我更多的拍手!
程式碼:行銷活動效益知多少?顧客回購了嗎?-彙整資料視覺化所需的基本元素-系列3(附Python程式碼)
作者:張友志 (臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)
更多實戰案例及情境好文推薦
機器學習 X 精準行銷 KDD 2.0程序:【內部資料】實案應用 (附Python程式碼)
機器學習 X 精準行銷 KDD 2.0程序: 【內部資料】實案應用 (附Python程式碼) 在開始之前,可參考先前撰寫的2篇文章,我們可以
行銷活動利潤模型與最佳決策點分析【前言與個案介紹篇】
行銷活動利潤模型與最佳決策點分析【前言與個案介紹篇】 當談到精準行銷時,第一個映入眼簾的通常是,根據用戶特點、興趣或以往的購買行爲,精準的向