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


若您是行銷部門的人員,每天可能為了增加產品的曝光,運用不同的行銷手法,例如:透過媒體廣告、網路廣告、報章雜誌、各種不同的數位行銷通路宣傳…等;若您是單位主管,可能想知道不同行銷活動的開支,到底帶來了多少的營收。

那…到底該如何評估這些行銷活動的效益呢?

本系列文章,我們將用實案演練的方式,帶領讀者們用數據分析,讓數據說話,解密行銷活動效益評估分析。

情境主題概要說明:

  1. 資料來源:以某零售商品平台的匿名銷售資料,
  2. 數據筆數: 2016~2019年的資料,筆數大約30萬筆資料,
  3. 如何評估: 我們將探討「不同的行銷活動」與「顧客回購次數多寡」與「利潤」的關係
  4. 如何呈現:將資料視覺化,讓大家一目了然圖形中所帶給我們的重要資訊。

當我們拿到大量的資料時,如何快速找到所需要的重要資料,快速作出有價值的分析並進一步視覺化呢?資料前處理的作業是相當重要的,好的資料處理,可以幫助我們使資料呈現更整潔、讓資料成更具有意義的內容,還能使資料視覺化過程更有效率。

這裡的概念與整理髒亂的房間有異曲同工之妙,必須將房間好好整理一番,才能快速地找到我們所需要的物品,同樣地,為了找到重要線索,我們必須要把資料先整理好!

資料前處理-取出重要關鍵欄位

第一階段要進行的是資料前處理的動作,資料前處理的三個主要過程分為將原始資料中取出所需要的項目並且整理,接下來將整理好的資料按照時間先後順序去分類,並建立一個會員消費紀錄資料庫,最後使用資料庫的內容彙整成繪圖所需的基本元素。

一、資料前處理-取出重要關鍵資料

本次資料處理主要會使用到的工具為pandas、numpy以及datetime,我們使用import將工具們套用進來後,接著使用pandas讀取sales_data.csv檔案(可點擊鏈結下載銷售資料),讀取後一樣可以在右上角的variable explorer中查看資料。

部分原始資料的具體模樣如圖1所示:

圖 1、部分原始資料示意圖

檢視完原始資料後,是不是不太清楚要採用哪幾個欄位來作行銷活動的效益評估分析呢?本系列要實戰演練的是分析客戶透過甚麼「行銷活動」的吸引而「回購產品」的情形與「利潤」之間的關係。因此將會需要以下這些欄位項目,我們先將後續分析及繪圖可能會使用到的欄位取出,如下:

  1. 廣告代號all:每筆訂單不同時期的行銷活動
  2. 會員:每一位會員的專屬編號
  3. 訂單時間:會員送出訂單的時間
  4. 系列:由許多類似的產品所組成的系列(舉例:產品1–1、產品1–2、產 品1–3組成系列1)
  5. 單價:每一個產品的單價
  6. 成本:每一個產品的成本
    我們可以看到取出的欄位有單價以及成本的欄位,從這兩個欄位可以切割出一個新的重要欄位-「利潤」,如程式碼1所示。
  7. 利潤:由同一個產品的單價減掉它的成本所得出的金額

利潤能和其他不同欄位配合解釋出不同的關係,之後的視覺化圖形的呈現也會是非常重要的元素,可以說是在這次回購分析是不可或缺的角色!

程式碼1:

# 從資料中只取得所需的項目
all_data = all_data[['廣告代號all','會員','訂單時間','系列','單價','成本']]
# 計算出利潤項目(單價-成本)
all_data['利潤'] = all_data['單價'] - all_data['成本']

產出:

從原始資料取出的關鍵資料並且新增欄位「利潤」,如圖2所示。

圖 2、關鍵資料示意圖

取得所需要的欄位後,為了使內容看起來比較整潔,接著要將「廣告代號all」的名稱的「all」去除,以及它的欄位每一個項目中「廣告_」的部分刪除,最後再把所有廣告分類歸納成主要系列廣告(舉例:GINEP_D與GINEP_P都會被歸類在GINEP),如程式碼2所示。

程式碼2:

# 將【廣告代號all】 --> 【廣告代號】
all_data = all_data.rename(columns = {'廣告代號all' :'廣告代號',})
# 將廣告代號中的項目「廣告_」去除
all_data['廣告代號'] = all_data['廣告代號'].str.replace('廣告_','')
# 把子項廣告歸納回大廣告
all_data['廣告代號'] = all_data['廣告代號'].str.split('_').str.get(0)

產出:

廣告代號欄位以及名稱整理後的成果,如圖3所示。

圖 3、整理廣告欄位及名稱後資料示意圖

整理好「廣告代號」欄位名稱以及內容,是不是比較好看了一些呢,之後我們要開始取出所要分析的資料。然而這次實戰後續中主要分析的重心是「2018年系列1(舉例:產品1–1、產品1–2、產品1–3組成系列1)」的銷售資料。

二、取出分析資料(系列 1-全資料集)

首先,從整理好的資料中使用groupby按照系列分群,再將系列1的資料存取出來,然後把後續視覺化圖形呈現不會再用到的欄位(單價、成本)刪除,使資料讀起來更清楚,如程式碼3。

程式碼3:

# 產品分群
product_data = all_data.groupby('系列')
# 存取系列1
product_1 = pd.DataFrame(product_data.get_group('系列1'))
# 將之後不需要用到的欄位刪除
del product_1['單價']
del product_1['成本']

產出:

已取出關鍵資料中「系列1」的部分,並且將後續不會用到的欄位刪除,如圖4所示。

圖 4、系列1資料示意圖

接下來要把訂單時間改成可以計算時間的形式(datetime),在後續將資料用時間分類的時候能夠更加順利。

為了方便型態轉換,我們先把訂單時間中的 ’T’ 字母去除,去除完後使用datetime的功能,將原本為string的形式轉換成datetime形式,最後使用dtypes確認product_1中「訂單時間」的欄位項目是否轉換成功,如程式碼4所示。

程式碼4:

# 把訂單時間中的"T"去掉
product_1['訂單時間'] = product_1['訂單時間'].str.replace('T',' ')
# 將訂單時間改成datetime形式
product_1['訂單時間'] = pd.to_datetime(product_1['訂單時間'])
# 檢查「訂單時間」是成功更改為datetime
product_1.dtypes

產出:

已將「訂單時間」欄位的資料都已轉換成datetime型態,如圖5所示。

圖 5、訂單時間轉換後檢查

檢查完畢之後,要取得系列1曾經使用了哪些行銷活動,我們要從系列1的資料中得到所有的廣告代號類別,那為甚麼要這樣子做呢?還記得嗎?我們本系列要帶大家探討的是「行銷活動」與「顧客回購」分析,在本次實戰分析系列中行銷活動(廣告)是整個分析過程的主軸之一,因此要將廣告類別取出才能延續下去在後面的分析流程,如程式碼5所示。

程式碼5:

# 找到系列1中的所有廣告名稱
ad_pd1 =product_1['廣告代號'].unique().tolist()

產出:

2016~2019年曾使用在系列1上的行銷活動(包含自然流量),如圖6所示。

圖 6、2016~2019年系列1之廣告清單

產出了所有的行銷活動資料,想要看看「資料前處理」後資料內容意義的豐富度如何轉變嗎?想要使資料視覺化過程更加快速、更加容易嗎?
想要知道更多的後續內容嗎?

那麼!請不要錯過我們該系列的後續!

下一篇文章,將會跟大家分享如何將取出來的關鍵資料建立成一個會員消費紀錄資料庫,敬請期待。

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

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

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

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

回到頂端