使用Python對零售商品進行數(shù)據(jù)分析
一、主要內(nèi)容:
1、清洗數(shù)據(jù)。將列名統(tǒng)一修改、處理缺失數(shù)據(jù)和異常數(shù)據(jù)、轉(zhuǎn)換日期等數(shù)據(jù)類型
2、查看總體銷售情況
3、商品維度進行分析。主要分析內(nèi)容有:商品價格分析,商品銷售量、銷售額情況分析,商品關(guān)聯(lián)分析
4、店鋪維度進行分析。主要分析內(nèi)容有:店鋪銷售量、銷售額法分析,店鋪促銷情況分析,店鋪銷售時間分析,周均消費次數(shù)分析,客單價分析等
5、相關(guān)性分析:用關(guān)聯(lián)關(guān)系表和相關(guān)矩陣圖初步對變量之間的關(guān)系進行分析。
6、用戶維度進行分析。主要分析內(nèi)容有:分析用戶基本購買情況,按時間(周)對用戶購買情況進行分析,用戶購買力分析,用戶復(fù)購率分析,RFM區(qū)分用戶。
二、使用工具
Python
三、數(shù)據(jù)來源
該數(shù)據(jù)集包含2018年6月1日-2018年7月5日的公司零售的交易信息。
四、字段含義
- SDATE(訂單日期)
- STORE_CODE(商店編號)
- POSID(POS機編號)
- BASK_CODE(用戶編號)
- PROD_CODE(商品編號)
- ITEM_QUANTITY(商品數(shù)量)
- ITEM_SPEND(商品實際價格)
- NORMAL_PRICE(商品單價)
- DISCOUNT_TYPE(折扣類型)
- DISCOUNT_AMOUNT(折扣金額)
五、數(shù)據(jù)清洗
1、查看總體數(shù)據(jù)特征
從圖片中初步可以看出數(shù)據(jù)集可能存在的異常數(shù)據(jù)以及需要進行初步處理的地方有以下幾點:
1)數(shù)據(jù)表中的SDATE字段需要將數(shù)據(jù)類型轉(zhuǎn)換為日期型方便后續(xù)計算;
2)數(shù)據(jù)表中的ITEM_SPEND字段有負(fù)值,即商品實付金額為負(fù),為異常數(shù)據(jù);
3)數(shù)據(jù)表中的ITEM_QUANTITY字段有負(fù)值,即商品數(shù)量為負(fù),為異常數(shù)據(jù);
4)數(shù)據(jù)表中的DISCOUNT_AMOUTN字段數(shù)據(jù)有正值,即折扣后金額比折扣前金額高,為異常數(shù)據(jù)。
5)為方便閱讀與查看,將列名統(tǒng)一改為符合駝峰命名法
2、修改列名
item.columns = ['shop_date','store_id','pos_id','user_id','prod_id','item_quantity','item_spend','normal_price','discount_type','discount_amount']
3、檢驗缺失數(shù)據(jù)
item.apply(lambda x: sum(x.isnull()) / len(x), axis=0)
4、查看并轉(zhuǎn)換數(shù)據(jù)類型
(1)查看數(shù)據(jù)表類型
如圖可發(fā)現(xiàn)數(shù)據(jù)中沒有缺失數(shù)據(jù),因此不需要進行缺失值處理
(2)轉(zhuǎn)換數(shù)據(jù)類型
數(shù)據(jù)類型中的object表示如果一列中含有多個類型,則該列的類型會是object,同樣字符串類型的列也會被當(dāng)成object類型,因此object類型中SDATE數(shù)據(jù)類型應(yīng)為日期類型,此外數(shù)值類型由于涉及零售的金錢問題,也應(yīng)都調(diào)整為兩位小數(shù)。
因此最終數(shù)據(jù)表數(shù)據(jù)類型需要調(diào)整的地方主要有以下幾點:
- 1)調(diào)整日期數(shù)據(jù)類型
- 2)將金錢調(diào)整為兩位小數(shù)
- 3)查看調(diào)整后數(shù)據(jù)類型
#日期數(shù)據(jù)類型 item.shop_date = pd.to_datetime(item.shop_date) #金錢保留兩位小數(shù) pd.set_option('display.float_format', lambda x: '%.2f' % x)#將所有數(shù)據(jù)轉(zhuǎn)換為兩位小數(shù)
(3)查看修改后數(shù)據(jù)表數(shù)據(jù)類型
5、查看異常值并刪除
根據(jù)上一小節(jié)對數(shù)據(jù)的初步查看發(fā)現(xiàn)的問題進行操作,在上一小節(jié)中發(fā)現(xiàn)數(shù)據(jù)表中商品數(shù)量、訂單總金額、商品實付金額均有負(fù)值,且折扣金額為正,折扣金額的計算可能受到金額為負(fù)的影響,此外,數(shù)據(jù)也可能存在空值。因此,異常值的刪除主要有以下幾個操作:
1)將商品數(shù)量、訂單總金額、商品實付金額為負(fù)值的調(diào)整為正值;
2)新建銷售總金額字段:銷售總金額=單價*數(shù)量根據(jù)修改后的數(shù)據(jù)進行折扣金額的計算:折扣金額=銷售總金額-實際付款金額(ITEM_SPEND),與實際折扣金額不同的可以判定為異常數(shù)據(jù),進行刪除操作;
3)刪除過后分析是否還存在折扣金額為正的數(shù)據(jù),若存在,也進行刪除操作。
最后發(fā)現(xiàn)不存在折扣金額與實際折扣不同的數(shù)據(jù),可以判定無異常值。
六、數(shù)據(jù)分析
1、總體銷量數(shù)據(jù)
由總體銷售情況分析可知,商店在2018年6月1日-2018年7月5日共有280878個用戶進店購買過商品,總銷售額為22216624.17元,有流水的商品數(shù)共19261個。
2、商品維度分析
(1)商品價格分析
由初步價格箱型圖可知,客戶比較青睞店鋪內(nèi)的低價商品,且由此圖無法很明顯的看出商品價格具體情況,因此下面將商品價格為0-50的價格提取出來進行分析
#求商品價格的四分位數(shù) df_1 = pd.to_numeric(item_normal['normal_price']) q = [df_1.quantile(i) for i in [0,.25,.5,.75,1]];q[-1] += 1 q
[0.5, 3.6, 7.0, 13.8, 51.0]
由最后的箱型圖可知,商品價格最多的在3.6元~13.8元之間,也符合消費者在零售商店購買的商品價格會比較低,店家可以根據(jù)消費者的消費情況對商品進行調(diào)整,多上架一些平價、常用的商品供消費者選擇。
(2)查看銷量排名前十和最后的商品
本小節(jié)分析了商品銷售量前10和商品銷售量最后的商品數(shù)量,此外將商品銷售量前10的商品繪制柱狀圖進行分析。
由圖表可知,前3銷售量的商品很明顯比后面商品銷量多,差別至少為2000以上,而商品銷量最后的商品在計算過程中發(fā)現(xiàn)有很多商品銷量為1,將所有銷量為1的商品提取出來,共有2673個,這2673個商品在這一段時間只銷售了1個商品,可能為商品為不常用商品,也可能是商品本身有其他問題。
(3)查看銷售額排名前十和后十的商品
本小節(jié)主要分析了商品銷售額前10和商品銷售量后10的商品,此外將商品銷售量前10的商品繪制柱狀圖進行分析。由圖表可知,前3銷售量的商品很明顯比后面商品銷售額多,差別至少為50000以上,而商品銷量最后的商品僅僅在1元左右,這些商品無論是數(shù)量還是銷售額都很少,商品可能存在問題。
(4)查看銷售量與銷售額關(guān)系
由于商品銷售量最后的銷售量為1,數(shù)量共2673個,因此查看銷售量最后2673個商品中同時銷售額在后10的商品,發(fā)現(xiàn)銷售額最后的商品均為銷量為1的商品,本小節(jié)查看了銷售額和銷售量最后的商品編號,找出之后根據(jù)具體的商品,找出原因,考慮如何優(yōu)化或者是否要下架。
(5)商品關(guān)聯(lián)度分析
從以上的結(jié)果可以總結(jié)出:
從總體上看,所有組合商品中支持度數(shù)值偏低,這是由于平臺銷售的商品種類繁多,也可能是用戶同時購買兩個商品的可能性低,需要進一步進行分析;
商品組合[1570] --> [1557]的置信度最高,表示支持率在1%的情況下購買商品編號1570的用戶中有70%會購買商品編號1557,可以對這兩種商品進行捆綁銷售;
3、店鋪維度分析
進行店鋪維度的分析可以分析各店鋪銷售情況,判斷哪些店鋪銷售情況不好,考慮是否需要對店鋪員工進行培訓(xùn)或裁員。
(1)店鋪銷售量情況分析
本小節(jié)分析了商品銷售量前10的店鋪,可以發(fā)現(xiàn)商品銷售數(shù)量前2的店鋪銷售量遠(yuǎn)超過后面的店鋪,超過150000個商品,說明D002和A001兩個店鋪商品數(shù)量銷售情況很好。
本小節(jié)分析了商品銷售額前10的店鋪,進行圖表分析,可以發(fā)現(xiàn)A001和D002兩個店鋪銷售額遠(yuǎn)超其他店鋪,至少超過了2000000元,根據(jù)上小節(jié)分析,這兩個店鋪銷售量與銷售額均遠(yuǎn)超其他店鋪,說明兩個店鋪銷售情況良好。
(2)店鋪促銷情況分析
4、銷售情況分析
(1)下單時間分析
(2)銷售額分析
由于數(shù)據(jù)表中時間僅有日期,沒有具體的銷售時間,且數(shù)據(jù)量由2018年6月1日-2018年7月5日,僅有約一個月的時間,因此分析月銷售量沒有很大的意義,因此首先對每周周一至周日的銷售情況進行分組計算,求出一周內(nèi)不同天的銷售情況,分析每周哪一天銷售情況最好。
由圖表可以看出,周一至周五的下單量在一條線上下波動,沒有很大的起伏,周六和周日兩天的下單量遠(yuǎn)遠(yuǎn)高于周一至周五的下單量,高出了至少50000單,銷售額也是同樣的趨勢,超出了至少400000元,可以看出一般周末用戶的下單量與交易額會遠(yuǎn)遠(yuǎn)高于工作日的下單情況,商家可以考慮在周末多上一些商品供用戶選擇。
(3)每日銷售額/銷售量分析
本小節(jié)分組計算了日銷售額與日銷售量的數(shù)據(jù),并繪制了折線圖進行趨勢對比分析,由圖中可知,銷售量與銷售額的趨勢幾乎相同,且均在2018年6月16日達到最高,。
(4)周均消費次數(shù)/金額
總訂單數(shù) 280878 次
周數(shù) 6 周
周均消費次數(shù) 46813 次
周均消費金額為: 3702770.0 元
(5)客單價
商場(超市)每一個顧客平均購買商品的金額,客單價也即是平均交易金額。
客單價為: 79.0 元
由于數(shù)據(jù)表中數(shù)據(jù)量由2018年6月1日-2018年7月5日,僅有約一個月的時間,因此分析月銷售量沒有很大的意義,因此首先對每周周一至周日的銷售情況進行分組計算,求出不同周的大致銷售情況,最終結(jié)果可知總訂單數(shù)為280878次,共有6周的數(shù)據(jù),周均消費次數(shù)為46813次
5、相關(guān)性分析
查看數(shù)據(jù)相關(guān)性
我們可以查看數(shù)據(jù)的相關(guān)性,值越接近1,說明相關(guān)性越強。也可以把相關(guān)性信息進行可視化,顏色越接近黃色相關(guān)性越高,越接近紫色相關(guān)性越低。由相關(guān)性圖可知,商品銷售總額與商品數(shù)量、折扣金額和商品銷售總額相關(guān)性相對強,周數(shù)和銷售額相關(guān)性最弱
6、用戶分析
(1)用戶角度分析
從用戶角度看,每位用戶平均購買8.83單位的商品,最多的用戶購買了6581個商品,屬于狂熱用戶。用戶的平均消費金額(客單價)79.1元,標(biāo)準(zhǔn)差是291.24,結(jié)合分位數(shù)和最大值看,平均值和50~75分位之間的接近,肯定存在小部分的高額消費用戶。
(2)按周維度分析
按周統(tǒng)計每周的商品銷量和銷售額。從圖中可以看到,銷售量和銷售額趨勢相同,沒有什么異常的地方,前幾周銷量比較平穩(wěn),甚至有些下降,而后面幾周銷量逐漸高漲,可能是商店逐漸被用戶所認(rèn)可。
(3)觀察用戶消費購買力
左邊的直方圖的x軸代表item_spend的分組,一共30組。y軸代表item_spend中對應(yīng)到各個分組的頻數(shù)。從直方圖看,大部分用戶的消費能力確實不高,高消費用戶在圖上幾乎看不到。這也確實符合消費行為的行業(yè)規(guī)律。
(4)分析用戶的復(fù)購率
復(fù)購率 = 單位時間內(nèi),消費兩次及以上的用戶數(shù) / 購買總用戶數(shù)
圖上復(fù)購率可知復(fù)購率一直在62%以上,可能因為是零售商店,用戶會經(jīng)常購買商品,尤其到最后幾周復(fù)購率更高,可能因為用戶已經(jīng)開始信任店鋪
(5)用戶RFM分析
通過RFM方法,我們根據(jù)用戶購買商品的數(shù)據(jù)進行分析,對用戶進行了歸類。在促銷等很多過程中,可以更加精準(zhǔn)化,針對不同類別的用戶進行不同的符合其特點的促銷方式和銷售方式,不至于出現(xiàn)用戶反感的情景。
以上就是使用Python對零售商品進行數(shù)據(jù)分析的詳細(xì)內(nèi)容,更多關(guān)于Python數(shù)據(jù)分析零售商品的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Django之第三方平臺QQ授權(quán)登錄的實現(xiàn)
本文主要介紹了Django之第三方平臺QQ授權(quán)登錄的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Python實現(xiàn)檢測服務(wù)器是否可以ping通的2種方法
這篇文章主要介紹了Python實現(xiàn)檢測服務(wù)器是否可以ping通的2種方法,本文分別講解了使用ping和fping命令檢測服務(wù)器是否可以ping通,需要的朋友可以參考下2015-01-01NCCL深度學(xué)習(xí)之初始化及ncclUniqueId的產(chǎn)生源碼解析
這篇文章主要為大家介紹了NCCL源碼解析之初始化及ncclUniqueId的產(chǎn)生詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04