行銷活動效益知多少?顧客回購了嗎? -萃取精華資料中的精華-系列5(附Python程式碼)

行銷資料科學
15 min readOct 7, 2020

歡迎回來「行銷活動效益知多少?顧客回購了嗎?」系列的第五篇文章,本篇文章要跟大家分享核心架構中「外部迴圈」的部分,如何將資料前處理後的精華資料,再做進一步的萃取成為我們最終資料視覺化的重要元素

前情提要:
前三篇文章,已經跟大家分享了資料前處理的重要性以及如何在複雜的資料中取出關鍵資料,並且如何將關鍵資料內容建立成一個會員消費紀錄資料庫,也把「會員消費紀錄資料庫」彙整出後續「資料視覺化」所會使用到的基本元素。
第四篇文章,向大家說明了資料視覺化想法、視覺化的程式碼核心架構以及講解核心架構中「內部迴圈」如何取出每個月不同客群的每人平均利潤。

現在,就開始趕快開始萃取精華中的精華吧!

外部迴圈

以下就開始解釋程式碼架構中外層迴圈(橘色區塊)的部分。

圖 1、程式碼架構(外層迴圈)

外層迴圈程式碼的一開始以【for ad_num in range(len(ad_pd1)):】對應到圖1的橘色第一個區塊方格【外層迴圈:】,此段程式碼的涵義是公司在系列1上所使用的廣告種類「ad_pd1」的長度(41),一樣可以從len(ad_pd1)的產出結果得知,在外面包上range()之後,for迴圈中的’ad_num’ 會從0開始執行,執行完一次就換到1,以此類推程式碼將會按照順序地跑到40,總共41次,此處的41次就分別代表是41個不同廣告,以下依然是以廣告「critei」做舉例。

外層迴圈程式碼(1)、(2)都必須縮排在第一個橘色方格內,程式碼才能執行成功唷,下方開始解釋外層迴圈程式碼。

1. 外層迴圈程式碼(1)

看完程式碼架構(圖1)之後,是否對於外層迴圈程式碼(1)的位置感到疑問呢?以下為大家解釋為何要放置這段程式碼以及為何要放在這個位置。

每個廣告的內容在內層迴圈做資料處理的時候必須是互相獨立的狀態,否則所有廣告的資料都會混在一起,會造成繪圖的資料錯誤,因此在跑內層迴圈之前都必須將所要存放資料的清單清空一次,好讓每個廣告資料都是歸在屬於自己的清單中,如程式碼1所示。

程式碼1:

ad_total=[]ad_total_mon = []ad_total_mon = pd.DataFrame(ad_total_mon)

產出:

建立好提供後續儲存的ad_total(List),ad_total_mon(DataFrame),如圖2所示。

圖 2、ad_total與ad_total_mon尚未存取任何資料前的狀態

2. 外層迴圈程式碼(2)

在前一篇系列文章【行銷活動效益知多少?顧客回購了嗎? -資料視覺化設計-系列4】內層迴圈程式碼執行結束後我們得到了單一廣告每個月份不同客群的資料後,即將進行的是計算每個月各自的所有客群加總起來的利潤,並且把index重新排序。

是否不知道計算出所有客群加總起來的利潤的原因呢?

因為後續要產出每個月份的「每人平均利潤」來查看不同月份的利潤表現,所以在此求出每月的總利潤也就是每人平均利潤的「分子」,並且儲存在一個名為「mon_tt_profit」的DataFrame中,如程式碼2所示。

程式碼2:

# 計算每個月份利潤的總和mon_tt_profit = ad_total_mon.groupby('月份')['利潤'].sum()mon_tt_profit = mon_tt_profit.reset_index()

產出:

廣告critei各月份的總利潤(mon_tt_profit),如圖3所示

圖 3、廣告critei各月份的總利潤

接下來要計算出每人平均利潤的「分母」,每個月購買的總人數,儲存在一個名為「mon_tt_people」的DataFrame中,如程式碼3所示。

程式碼3:

# 計算每個月份購買人數mon_tt_people = ad_total_mon.groupby('月份')['人數'].sum()mon_tt_people = mon_tt_people.reset_index()

產出:

廣告critei各月份的總購買人數(mon_tt_people),如圖4所示。

圖 4、廣告critei各月份的總購買人數

我們獲得分子(廣告critei每個月份總利潤)跟分母(廣告critei每個月份購買的總人數)之後馬上就可以計算出我們的每個月平均利潤,如程式碼4所示。

程式碼4:

# 計算月份人均利潤mon_tt_profit[‘平均利潤’] = round(mon_tt_profit[‘利潤’] / 
mon_tt_people[‘人數’])

產出:

新增平均利潤欄位後的「mon_tt_profit」,如圖5所示。

圖 5、廣告critei各月份的利潤以及平均利潤

在這邊要問問正在讀此篇文章的你,看完圖5中的月份欄位是否發現了甚麼呢?沒錯,月份順序不是按照1到12月去排序的,或許又有另一個疑問,沒有按照順序排難道會有甚麼影響嗎?會的!如果沒有按照順序排的話折線圖(月每人平均利潤)的線會從DataFrame排序最前面的row開始連,如果是圖5的話則會從10月開始連,整體的線會穿來穿去的相當凌亂,導致在判讀的時候會有點困難,因此以下要開始解決順序的問題。

因此首先我們可以簡單查看一年中有帶來利潤的是哪幾個月,並且存取在一個串列之中,供後續使用,如程式碼5所示。

程式碼5:

# 存取該廣告有利潤的月份mon_list = ad_total_mon['月份'].unique().tolist()

產出:

廣告critei有帶來利潤的月份,如圖6所示。

圖 6、廣告critei有帶來利潤的月份

接下來,將10、11、12月份的資料另外存在一個名為oct_nov_dec的DataFrame之中(若該廣告無10、11、12份的資料則會存成空的DataFrame),目的是為了將資料補在DataFrame的最後面,如程式碼6所示。

程式碼6:

# 先把 10 11 12月的資料存下來oct_nov_dec = []oct_nov_dec = pd.DataFrame(oct_nov_dec)for i in ['10月','11月','12月']:oct_nov_dec= pd.concat([oct_nov_dec,mon_tt_profit[mon_tt_profit['月份']== i]])

產出:

將10、11、12月份資料另外存在「oct_nov_dec」,如圖7所示、

圖 7、另存的10、11、12月份資料(oct_nov_dec)

接下來把mon_tt_profit中順序卡在最前面的10、11、12月份的資料刪除後,再將oct_nov_dec的DataFrame使用concat的方法補上mon_tt_profit,這樣不但沒有少資料並且資料也會是按照1到12月的順序呈現,符合我們的需求,方法如程式碼7所示。

程式碼7:

# 把原本的順序在前面10 11 12月資料刪除if '10月' in mon_list:mon_tt_profit.drop(mon_tt_profit.loc[mon_tt_profit['月份']=='10月'].index, inplace=True)if '11月' in mon_list:mon_tt_profit.drop(mon_tt_profit.loc[mon_tt_profit['月份']=='11月'].index, inplace=True)if '12月' in mon_list:mon_tt_profit.drop(mon_tt_profit.loc[mon_tt_profit['月份']=='12月'].index, inplace=True)# 在尾端補上 10 11 12月資料mon_tt_profit = pd.concat([mon_tt_profit,oct_nov_dec])

產出:

「mon_tt_profit」調整月份順序後資料,如圖8所示。

圖 8、mon_tt_profit調整月份順序後資料

得出每個月份的平均利潤且解決完排列順序的問題之後,接下來要計算的是「一年的平均利潤」,那為甚麼我們要計算一年的平均利潤呢?因為要比較每個月的表現哪一個月是高於平均,哪一個月是低於平均,藉由判斷後可以針對不同狀況來做不一樣的處理策略。

繪製折線圖(年每人平均利潤)所需的元素是要在每個月都有年每人平均利潤的值,才能成功呈現期望的圖形,因此在此使用小小的for 迴圈將年每人平均利潤補12次,將繪圖所需的資料補齊,如程式碼8所示。

程式碼8:

# 年平均資料mon_mean_profit =[]for i in range(12):mon_mean_profit.append(round(mon_tt_profit.groupby(‘月份’)[‘平均利潤’].sum().mean()))

產出:

繪製折線圖(年每人平均利潤)所需資料,如圖9所示。

圖 9、繪製折線圖(年每人平均利潤)所需資料

以上就將所有繪圖所需的資料通通整理完畢!恭喜各位堅持到最後一刻,我們目前已經完成資料視覺化程式碼的99%,只差繪圖的程式碼,就即將大功告成了!

下一篇文章將會解說繪圖(plotly)的部分,只需要短短幾行設定,就能執行出直觀並且具有涵義的圖,並且會跟大家說明如何判斷圖形中的管理意涵,就讓我們趕快繼續看下去吧!

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

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

程式碼:行銷活動效益知多少?顧客回購了嗎? -萃取精華資料中的精華-系列5(附Python程式碼)

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

行銷活動效益知多少?顧客回購了嗎?-取出關鍵資料-系列1(附Python 程式碼)
行銷活動效益知多少?顧客回購了嗎? -建立會員消費紀錄資料庫-系列2(附Python程式碼)
行銷活動效益知多少?顧客回購了嗎?-彙整資料視覺化所需的基本元素-系列3(附Python程式碼)
行銷活動效益知多少?顧客回購了嗎? -資料視覺化設計-系列4(附Python程式碼)
行銷活動效益知多少?顧客回購了嗎? - 資料視覺化產出與分析判讀-系列6(附Python程式碼)

歡迎加入我們的Telegram獲取即時訊息!https://t.me/marketingdatascience
歡迎加入我們的Line@獲取即時訊息!https://line.me/R/ti/p/%40cde8265r

您可能有興趣:

📢TMR為您量身打造「全方位數據課程」

👨‍🎓熱門Python程式語言結合全新商業思維,快來終生學習不間斷!

【TMR】 X 【 好學校】
👨‍💼Python商業全系列數位課程👨‍💼

#行銷人必學實用Python課程

《 Python 0到1 基礎商業數據分析實戰 》
💥 價格 :3188
👉 從0開始:手把手從頭學習,適合完全沒學過的學員
👉 商業應用全台最多:傳授市面上少見的Python實務應用
👉 網路輿情爬蟲演練:網路輿情商務爬蟲技法
👉 競品分析:競爭價值定位圖找出藍海策略
👉 貨架陳列視覺化:解析行銷策略及廣告預算配置方法
🛒 前往購買:https://hahow.in/cr/python0-1

《 顧客分類大師:Python x RFM 會員經營新觀點 》
💥 價格 :2388

🎯 Python X RFM最佳拍檔,輕鬆鎖定潛(錢)在顧客
不需要出門,在家也能學習專業課程,讓你擁有會員經營的新思維!

本課程以五個面向為您的企業,做更深入的健診:
👉 市場面:以最基本的顧客消費資料(頻率、購買次數),將現有顧客區隔分類。
👉 財務面:計算出在每個顧客身上所賺得毛利,在不同客群中的獲利。
👉 行銷面:藉由 RFM 的分析進行行銷預算重新分配。
👉 產品面:觀察在不同客群中,各個產品的銷售狀況。
👉 顧客回購面:分析顧客的購買週期後,進行精準推薦。
🛒 前往購買:https://hahow.in/cr/rfm-model

《 AI 行銷學:用 Python 機器學習創造商業新價值 》
💥 價格 :3888
👉 全台第一門Python機器學習線上課程
👉 教導你快速理解Logistic Regression, XGBoost, Random Forest商務機器學習模型。
👉 建構老闆或主管們看得懂的模型評估指標,讓精準行銷方案更容易被接受且推出
👉 如何利用機器學習找出消費者心中的重要變數及客樣貌與特徵,做到個體及總體的商品推薦?
👉 如何從數以萬計的消費資料中偵測可能的詐欺名單?
🛒 前往購買:https://hahow.in/cr/python-ml

#實用投資分析課程

《 用 Python 打造自己的股票小秘書 》
💥 價格 :4288
👉 打造自動推播機器人,趁著股市最近低迷,找出最適進場點
👉 「到價提醒」功能,大大提升投資便利性
👉 了解Python雲端服務架構,完整的專案流程
👉 孰悉No SQL資料庫操作,未來大數據的基礎
🛒 前往購買:https://hahow.in/cr/stock-secretary

#好學校企業百大課程之一:

台科 EMBA 年年爆滿的一門 Word 課(A系列)
💥 價格 :950
👉 系統性學習Office軟體功能,教您別人不知道的快捷鍵
👉 調整不受控制的行距與精準對齊排版
👉 一鍵轉換Word到Excel
👉 有效率處理企畫書、畢業論文、小組報告、公文等
🛒 前往購買:https://hahow.in/cr/tmr-word1

台科 EMBA 年年爆滿的一門 Word 課(B+C系列)
💥 價格 :1,050
👉 傳授獨家快捷鍵字典
👉 分享好用的大綱模式,讓文章處理更有效率
👉 建立大綱模式、多層次清單、目錄與圖表目錄,掌握文件編輯規則
👉 優化文章的邏輯架構
🛒 前往購買:https://hahow.in/cr/tmr-word2

— — — — — — — — — — — — — — — — -

【TMR】 X 【工研院】
🏭工業4.0大數據智慧應用課程🏭

《Python工業4.0人工智慧:製程資料處理大師》

製程數據資料 X 資料科學,
為您開啟工業人工智慧領域的大門!
👉全球前十大智慧製程案例實戰
👉專業講師手把手帶您入門製程資料處理分析
👉課後完整模組心法讓您通通帶回家

💥價格 : 2,800
🏃趕緊手刀前往購買:https://bit.ly/39koNbn

— — — — — — — — — — — — — — — — -

2020課程地圖

💪 點我看更多

🏆 國內第一本行銷資料科學專書

💪 點我看書本資訊

🏆 國內第一本行銷資料科學 ” 實作 ” 專書

💪 點我看書本資訊

🏆國內第一本「股票小祕書」專書

附上購書網址~ 國外的朋友也可以使用博客來與金石堂的通路轉運到國外哦!

  1. 天瓏書局:http://bit.ly/stock-secretaryBot
  2. 博客來:https://www.books.com.tw/products/0010833772

--

--

行銷資料科學

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR