使用Python對零售商品進行數據分析

一、主要內容:

1、清洗數據。將列名統一修改、處理缺失數據和異常數據、轉換日期等數據類型

2、查看總體銷售情況

3、商品維度進行分析。主要分析內容有:商品價格分析,商品銷售量、銷售額情況分析,商品關聯分析

4、店鋪維度進行分析。主要分析內容有:店鋪銷售量、銷售額法分析,店鋪促銷情況分析,店鋪銷售時間分析,周均消費次數分析,客單價分析等

5、相關性分析:用關聯關系表和相關矩陣圖初步對變量之間的關系進行分析。

6、用戶維度進行分析。主要分析內容有:分析用戶基本購買情況,按時間(周)對用戶購買情況進行分析,用戶購買力分析,用戶復購率分析,RFM區分用戶。

二、使用工具

Python

三、數據來源

該數據集包含2018年6月1日-2018年7月5日的公司零售的交易信息。

四、字段含義

  • SDATE(訂單日期)
  • STORE_CODE(商店編號)
  • POSID(POS機編號)
  • BASK_CODE(用戶編號)
  • PROD_CODE(商品編號)
  • ITEM_QUANTITY(商品數量)
  • ITEM_SPEND(商品實際價格)
  • NORMAL_PRICE(商品單價)
  • DISCOUNT_TYPE(折扣類型)
  • DISCOUNT_AMOUNT(折扣金額)

五、數據清洗

1、查看總體數據特征

從圖片中初步可以看出數據集可能存在的異常數據以及需要進行初步處理的地方有以下幾點:

1)數據表中的SDATE字段需要將數據類型轉換為日期型方便後續計算;

2)數據表中的ITEM_SPEND字段有負值,即商品實付金額為負,為異常數據;

3)數據表中的ITEM_QUANTITY字段有負值,即商品數量為負,為異常數據;

4)數據表中的DISCOUNT_AMOUTN字段數據有正值,即折扣後金額比折扣前金額高,為異常數據。

5)為方便閱讀與查看,將列名統一改為符合駝峰命名法

2、修改列名

item.columns = ['shop_date','store_id','pos_id','user_id','prod_id','item_quantity','item_spend','normal_price','discount_type','discount_amount']

3、檢驗缺失數據

item.apply(lambda x: sum(x.isnull()) / len(x), axis=0)

4、查看並轉換數據類型

(1)查看數據表類型

如圖可發現數據中沒有缺失數據,因此不需要進行缺失值處理

(2)轉換數據類型

數據類型中的object表示如果一列中含有多個類型,則該列的類型會是object,同樣字符串類型的列也會被當成object類型,因此object類型中SDATE數據類型應為日期類型,此外數值類型由於涉及零售的金錢問題,也應都調整為兩位小數。

因此最終數據表數據類型需要調整的地方主要有以下幾點:

  • 1)調整日期數據類型
  • 2)將金錢調整為兩位小數
  • 3)查看調整後數據類型
#日期數據類型
item.shop_date = pd.to_datetime(item.shop_date)
#金錢保留兩位小數
pd.set_option('display.float_format', lambda x: '%.2f' % x)#將所有數據轉換為兩位小數

(3)查看修改後數據表數據類型

5、查看異常值並刪除

根據上一小節對數據的初步查看發現的問題進行操作,在上一小節中發現數據表中商品數量、訂單總金額、商品實付金額均有負值,且折扣金額為正,折扣金額的計算可能受到金額為負的影響,此外,數據也可能存在空值。因此,異常值的刪除主要有以下幾個操作:

1)將商品數量、訂單總金額、商品實付金額為負值的調整為正值;

2)新建銷售總金額字段:銷售總金額=單價*數量根據修改後的數據進行折扣金額的計算:折扣金額=銷售總金額-實際付款金額(ITEM_SPEND),與實際折扣金額不同的可以判定為異常數據,進行刪除操作;

3)刪除過後分析是否還存在折扣金額為正的數據,若存在,也進行刪除操作。

最後發現不存在折扣金額與實際折扣不同的數據,可以判定無異常值。

六、數據分析

1、總體銷量數據

由總體銷售情況分析可知,商店在2018年6月1日-2018年7月5日共有280878個用戶進店購買過商品,總銷售額為22216624.17元,有流水的商品數共19261個。

2、商品維度分析

(1)商品價格分析

由初步價格箱型圖可知,客戶比較青睞店鋪內的低價商品,且由此圖無法很明顯的看出商品價格具體情況,因此下面將商品價格為0-50的價格提取出來進行分析

#求商品價格的四分位數
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元之間,也符合消費者在零售商店購買的商品價格會比較低,店傢可以根據消費者的消費情況對商品進行調整,多上架一些平價、常用的商品供消費者選擇。

(2)查看銷量排名前十和最後的商品

本小節分析瞭商品銷售量前10和商品銷售量最後的商品數量,此外將商品銷售量前10的商品繪制柱狀圖進行分析。

由圖表可知,前3銷售量的商品很明顯比後面商品銷量多,差別至少為2000以上,而商品銷量最後的商品在計算過程中發現有很多商品銷量為1,將所有銷量為1的商品提取出來,共有2673個,這2673個商品在這一段時間隻銷售瞭1個商品,可能為商品為不常用商品,也可能是商品本身有其他問題。

(3)查看銷售額排名前十和後十的商品

本小節主要分析瞭商品銷售額前10和商品銷售量後10的商品,此外將商品銷售量前10的商品繪制柱狀圖進行分析。由圖表可知,前3銷售量的商品很明顯比後面商品銷售額多,差別至少為50000以上,而商品銷量最後的商品僅僅在1元左右,這些商品無論是數量還是銷售額都很少,商品可能存在問題。

(4)查看銷售量與銷售額關系

由於商品銷售量最後的銷售量為1,數量共2673個,因此查看銷售量最後2673個商品中同時銷售額在後10的商品,發現銷售額最後的商品均為銷量為1的商品,本小節查看瞭銷售額和銷售量最後的商品編號,找出之後根據具體的商品,找出原因,考慮如何優化或者是否要下架。

(5)商品關聯度分析

從以上的結果可以總結出:

從總體上看,所有組合商品中支持度數值偏低,這是由於平臺銷售的商品種類繁多,也可能是用戶同時購買兩個商品的可能性低,需要進一步進行分析;

商品組合[1570] –> [1557]的置信度最高,表示支持率在1%的情況下購買商品編號1570的用戶中有70%會購買商品編號1557,可以對這兩種商品進行捆綁銷售;

3、店鋪維度分析

進行店鋪維度的分析可以分析各店鋪銷售情況,判斷哪些店鋪銷售情況不好,考慮是否需要對店鋪員工進行培訓或裁員。

(1)店鋪銷售量情況分析

本小節分析瞭商品銷售量前10的店鋪,可以發現商品銷售數量前2的店鋪銷售量遠超過後面的店鋪,超過150000個商品,說明D002和A001兩個店鋪商品數量銷售情況很好。

本小節分析瞭商品銷售額前10的店鋪,進行圖表分析,可以發現A001和D002兩個店鋪銷售額遠超其他店鋪,至少超過瞭2000000元,根據上小節分析,這兩個店鋪銷售量與銷售額均遠超其他店鋪,說明兩個店鋪銷售情況良好。

(2)店鋪促銷情況分析

4、銷售情況分析

(1)下單時間分析

(2)銷售額分析

由於數據表中時間僅有日期,沒有具體的銷售時間,且數據量由2018年6月1日-2018年7月5日,僅有約一個月的時間,因此分析月銷售量沒有很大的意義,因此首先對每周周一至周日的銷售情況進行分組計算,求出一周內不同天的銷售情況,分析每周哪一天銷售情況最好。

由圖表可以看出,周一至周五的下單量在一條線上下波動,沒有很大的起伏,周六和周日兩天的下單量遠遠高於周一至周五的下單量,高出瞭至少50000單,銷售額也是同樣的趨勢,超出瞭至少400000元,可以看出一般周末用戶的下單量與交易額會遠遠高於工作日的下單情況,商傢可以考慮在周末多上一些商品供用戶選擇。

(3)每日銷售額/銷售量分析

本小節分組計算瞭日銷售額與日銷售量的數據,並繪制瞭折線圖進行趨勢對比分析,由圖中可知,銷售量與銷售額的趨勢幾乎相同,且均在2018年6月16日達到最高,。

(4)周均消費次數/金額

總訂單數 280878 次

周數 6 周

周均消費次數 46813 次

周均消費金額為: 3702770.0 元

(5)客單價

商場(超市)每一個顧客平均購買商品的金額,客單價也即是平均交易金額。

客單價為: 79.0 元

由於數據表中數據量由2018年6月1日-2018年7月5日,僅有約一個月的時間,因此分析月銷售量沒有很大的意義,因此首先對每周周一至周日的銷售情況進行分組計算,求出不同周的大致銷售情況,最終結果可知總訂單數為280878次,共有6周的數據,周均消費次數為46813次

5、相關性分析

查看數據相關性

我們可以查看數據的相關性,值越接近1,說明相關性越強。也可以把相關性信息進行可視化,顏色越接近黃色相關性越高,越接近紫色相關性越低。由相關性圖可知,商品銷售總額與商品數量、折扣金額和商品銷售總額相關性相對強,周數和銷售額相關性最弱

6、用戶分析

(1)用戶角度分析

從用戶角度看,每位用戶平均購買8.83單位的商品,最多的用戶購買瞭6581個商品,屬於狂熱用戶。用戶的平均消費金額(客單價)79.1元,標準差是291.24,結合分位數和最大值看,平均值和50~75分位之間的接近,肯定存在小部分的高額消費用戶。

(2)按周維度分析

按周統計每周的商品銷量和銷售額。從圖中可以看到,銷售量和銷售額趨勢相同,沒有什麼異常的地方,前幾周銷量比較平穩,甚至有些下降,而後面幾周銷量逐漸高漲,可能是商店逐漸被用戶所認可。

(3)觀察用戶消費購買力

左邊的直方圖的x軸代表item_spend的分組,一共30組。y軸代表item_spend中對應到各個分組的頻數。從直方圖看,大部分用戶的消費能力確實不高,高消費用戶在圖上幾乎看不到。這也確實符合消費行為的行業規律。

(4)分析用戶的復購率

復購率 = 單位時間內,消費兩次及以上的用戶數 / 購買總用戶數

圖上復購率可知復購率一直在62%以上,可能因為是零售商店,用戶會經常購買商品,尤其到最後幾周復購率更高,可能因為用戶已經開始信任店鋪

(5)用戶RFM分析

通過RFM方法,我們根據用戶購買商品的數據進行分析,對用戶進行瞭歸類。在促銷等很多過程中,可以更加精準化,針對不同類別的用戶進行不同的符合其特點的促銷方式和銷售方式,不至於出現用戶反感的情景。

以上就是使用Python對零售商品進行數據分析的詳細內容,更多關於Python數據分析零售商品的資料請關註WalkonNet其它相關文章!

推薦閱讀: