行銷活動效益知多少?顧客回購了嗎?
建立會員消費紀錄資料庫-系列2(附Python程式碼)


歡迎來到「行銷活動效益知多少?顧客回購了嗎?」系列的第二篇文章,本篇文章要跟大家分享如何使用「關鍵資料」建立一個「會員消費紀錄資料庫」。

攝影師:Anna Shvets,連結:Pexels

前情提要:
在本系列的第一篇文章跟大家分享了資料前處理的重要性以及如何在複雜的資料中取出關鍵資料,提供後續資料前處理的重要元素。

若還沒看過行銷活動效益知多少?顧客回購了嗎? -取出關鍵資料-系列1(附Python 程式碼)的讀者們請點選連結。

在本系列第一篇文章行銷活動效益知多少?顧客回購了嗎?-取出關鍵資料-系列1(附Python 程式碼)將大部分所需要的欄位及元素都處理到一個段落,接下來我們要把按照我們目前取出並且整理好的關鍵資料(product_1)的訂單時間,將其整理分為1到12月。

加了分月份的概念,可以讓我們分析每個行銷活動在不同月份的效益,比較每個廣告在「不同月份」顧客的回購狀態。而顧客回購狀態與利潤的關係又能帶給我們什麼新的洞察?讓我們延續進行資料前處理的動作,我們會將成果在後面一一跟大家分享!

現在請跟著我建立會員消費紀錄資料庫吧~

一、取出分析資料(系列 1-2018年度)

在這段資料前處理的部分,同樣會使用到datetime的功能,將string的型態轉成datetime形式,用來判斷時間的先後順序,把資料按照月份分類完成,如程式碼1所示。

程式碼1:

# 先設立一個可以放2018年每個月資料的list
original_2018 = []
for i in range(1,13):
# 當月份等於12月的時候,執行下方程式
if i == 12 :
# 設立選取資料起始時間 (2018年 12月 1日)
begin = datetime(2018, i, 1)
# 設立選取資料結束時間 (2019年 1月 1日)
end = datetime(2019, 1, 1)
# 選取資料   ( 結束時間之前 )
pd1_2018 = product_1[product_1['訂單時間'] <= end]
# 選取資料   ( 開始時間之後 )
pd1_2018 = pd1_2018[pd1_2018['訂單時間'] >= begin]
# 將12月的資料加到存放每個月資料的list中
original_2018.append(pd1_2018)
# 當月份不等於12月的時候,執行下方程式
else :
# 設立選取資料起始時間 (2018年 某月 1日)
begin = datetime(2018, i, 1)
# 設立選取資料結束時間 (2018年 某月+1個月 1日)
end = datetime(2018, i+1, 1)
# 選取資料   ( 結束時間之前 )
pd1_2018 = product_1[product_1['訂單時間'] <= end]
# 選取資料   ( 開始時間之後 )
pd1_2018 = pd1_2018[pd1_2018['訂單時間'] >= begin]
# 將該月份的資料加到存放每個月資料的list中
original_2018.append(pd1_2018)

產出:

已將2018年系列1的訂單資料按照月份分類(original_2018),如圖1所示。

圖 1、2018年系列1每個月份訂單資料清單

可以從月份資料清單中點擊不同月份,會顯示出該月份的資料,以6月份的資料做範例,如圖2所示:

圖 2、6月份訂單資料

二、建立會員消費紀錄資料庫

分類好每個月的訂單資料後,再從每個月的每筆資料分析每一個會員分別在「哪個月」購買系列1的產品,並且判斷出他是「第幾次購買」、是因為「甚麼廣告」吸引會員前往購買,最後將上述資訊使用二維(雙層)字典的方式建立成一個資料庫,如程式碼2所示。

程式碼2:

# 建立每個會員的消費紀錄
customer_record = {}
for mon in range(len(original_2018)):
# 將每個訂單的利潤計算出來存成list
profit_gp = original_2018[mon].groupby('訂單時間')["利潤"].sum().tolist()
# 把訂單時間重複的drop掉
original_2018[mon] =     original_2018[mon].drop_duplicates(subset=['訂單時間'])
# 把利潤補回原本df
original_2018[mon]['利潤'] = profit_gp
# 將index 重新排序
original_2018[mon] = original_2018[mon].reset_index(drop = True)
a = original_2018[mon]
for i in range(len(a['會員'])):
# 如果會員「不在」字典的keys中,執行下方程式
if str(a['會員'][i]) not in customer_record.keys():
# 新增會員到keys中,並且放上對應的消費紀錄
customer_record[ str(a['會員'][i]) ] = {'1':str(mon+1)+'月_'+a['廣告代號'][i]}
# 如果會員已經在字典的keys中,執行下方程式
else:
# 直接在原有的會員keys下,放上對應的消費紀錄
customer_record[ str(a['會員'][i]) ][str(len(customer_record[ str(a['會員'][i]) ])+1)] = str(mon+1)+'月_'+a['廣告代號'][i]

產出:

建立完成的2018年系列1會員消費紀錄資料庫,如圖3所示。

圖 3、每個會員消費紀錄(2018年系列1)

建立完會員消費紀錄庫之後,還不太理解其中的意涵嗎?以下舉一個例子為大家說明:
圖3中的Key代表的是會員編號,Value表示的是會員的過往消費紀錄,然而我們可以看到會員編號「10024521」的過往消費紀錄,是以一個dictionary的型態呈現{ ‘ 1 ‘ :’ 1月_B2KP ‘ },那麼這層dictionary的Key跟Value分別又是甚麼意思呢?
「’ 1 ‘(key):’ 1月_B2KP ‘(value)」
冒號前面的 ‘ 1 ‘ (key)代表此次消費紀錄是第一次購買,
冒號後面 ‘ 1月_B2KP ‘(value)的部分表達的意思是此會員在1月的時候因為被行銷活動B2KP吸引而前往消費。


到這裡,您已經建立好會員消費紀錄資料庫了,資料前處理的部份還差最後一步!想要看看如何運用自己建立好的資料庫萃取出精華嗎?

下一篇文章將會跟大家分享如何運用建立好的資料庫整理出繪圖階段所需要的基本元素

請點擊下方系列文章連結了解更多!

Thinking smarter makes you work smarter
如果你喜歡我的文章的話,請給我一點拍手~
如果你覺得喜歡又實用的話,請給我更多的拍手!

程式碼:行銷活動效益知多少?顧客回購了嗎? -建立會員消費紀錄資料庫-系列2(附Python程式碼)

作者:張友志 (臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)

系列文章連結:

行銷活動效益知多少?顧客回購了嗎?-取出關鍵資料-系列1(附Python 程式碼)

更多實戰案例及情境好文推薦

回到頂端