購物籃分析 - Python實戰:商務資料結構整理
(附 Python 程式碼)
在不久之前我們曾撰寫過關於購物籃分析的文章,透過分析消費者常購買的產品組合進行分析,幫助我們了解產品與產品之間的關係,進而做出產品搭配與產品推薦等後續策略。
如果想要了解購物籃分析的概念,可以見此文章:你怎麼處理顧客交易資訊?Apriori演算法
本次文章內容主要使用常見的銷售資料,一步一步的展示如何進行購物籃分析的資料前處理。
首先,我們先引入套件與資料,接者檢視其資料結構,如程式碼 1。
程式碼 1:
from apyori import aprioriimport pandas as pdimport numpy as npalldata = pd.read_csv(‘sales_data.csv’)alldata = pd.DataFrame(alldata)
引入銷售資料後,藉由 variable explorer 查看銷售資料,可以看到銷售資料中有不同的系列,系列下還有不同的產品,本次分析將先選取具有分析價值的系列,再透過購物籃分析了解系列下產品搭配情形, 如圖一。
產品利潤計算
在本次的購物籃分析,我們同時也會將利潤列入考慮,所以需要將各項產品的利潤進行計算,以便進行之後的利潤分析,如程式碼 2。
程式碼 2:
# 利潤表格profit_df=alldata.copy()profit_df =profit_df.drop_duplicates(‘產品’)profit_df =profit_df[[‘產品’,’單價’,’成本’]]profit_df[‘利潤’] =profit_df[‘單價’]-profit_df[‘成本’]
計算各項產品之利潤,方便再後續分析將利潤放入考慮,計算成果如圖二。
系列銷售額計算
此次分析將會選銷售額前三高的系列進行分析,藉此選出具分析價值之系列。
從銷售資料中計算系列銷售額,可以透過 groupby 將不同系列的單價加總,並使用 sort_values 進行排序,完成所有產品銷售額排序。
接者,挑選營業額最高的前三系列,即完成了具有分析價值之系列篩選,結果分別為系列 1、系列 2、系列 3,如程式碼 3。
程式碼 3:
# 篩選前三銷售量好的商品top3_series = alldata.groupby(‘系列’)[‘單價’].sum()#[0:3]top3_series=top3_series.sort_values(ascending= False)top3_series = top3_series.index[0:3]
挑選產品銷售額前三名,產出結果如下:
top3_seriesIndex([‘系列1’, ‘系列2’, ‘系列3’], dtype=’object’, name=’系列’)
購物籃分析資料整理
想做好購物籃分析,最重要的固然是顧客訂單上所購買的產品,而要了解顧客一次都購買了哪些產品,就需從訂單編號下手。
系列一舉例
從銷售資料中找尋購買前三名之系列(具有分析價值之系列)訂單,以系列 1 為範例,我們先將訂單內有系列 1 的訂單編號尋找出來,如程式碼 4。
程式碼 4:
s=’系列1'series_data=alldata[alldata[‘系列’]==s]order_number=np.unique(series_data[‘訂單編號’])
取出後,我們須將訂單內所購買的產品一一列出,將相同銷售訂單內的商品放置於一個陣列中(如圖四),才能透過購物籃分析了解各個產品之間的關聯性,以第一個訂單編號為例,找出其訂單編號的銷售資料,如程式碼 5。
程式碼 5:
i = order_number[1]series_data[series_data[‘訂單編號’]==i]
從圖三中,可以看訂單編號 42515027729 的所有商品就從銷售資料中篩選出來,如圖三。
緊接者,我們須取出訂單編號內的產品(圖三中產品欄位),需使用 values 將【產品】欄位內資料抓取出來形成 array,程式碼如下:
程式碼 6:
series_data[series_data[‘訂單編號’]==i][‘產品’].values
產出:
array([‘產品3–6’, ‘產品3–2’, ‘產品3–6’, ‘產品3–2’], dtype=object)
實際執行
最後將以上步驟透過 for 迴圈方式一次處理三個系列下所有銷售訂單,同時我們可以在工作目錄中創建不同系列的資料夾,幫助我們更有系統的產出分析結果,程式碼如下:
程式碼 7:
record=[]for s in top3_series:series_data=alldata[alldata['系列']==s]order_number=np.unique(series_data['訂單編號'])os.mkdir(s + '商品搭配分析')for i in order_number:cart =series_data[series_data['訂單編號']==i]['產品'].valuesrecord.append(cart)print(cart)
產出:
透過這個概念將銷售資料架構進行整理,就達成了購物籃分析前資料整理,若是喜歡我的文章,請給我一點掌聲,我將在之後的文章和大家分享更多購物籃分析的實戰應用,幫助您了解更多購物籃分析如何應用於商業資料。
作者:陳俊凱(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)
更多實戰案例及情境好文推薦
自動篩選惡意言論,找出省錢關鍵! 深度學習結論篇:找出開源節流關鍵
自動篩選惡意言論,找出省錢關鍵! 深度學習結論篇:找出開源節流關鍵 在〈自動篩選惡意言論,找出省錢關鍵! 深度學習篇:找出最適模型〉一文中,
透過機器學習預測股市漲跌-模型建模(附 Python 程式碼)
透過機器學習預測股市漲跌-模型建模(附 Python 程式碼) 點此回顧 _透過機器學習預測股市漲跌-進階資料處理 前情提要 在第一篇系列文