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