您當前的位置:首頁 > 攝影

python資料視覺化案例

作者:由 艾倫 發表于 攝影時間:2020-01-12

本章介紹一下python中用來實現視覺化的工具matplotlib和seaborn。

seaborn和matplotlib的區別在於,seaborn很多視覺化都是設定好的,只需要用簡單的程式碼就可以實現好看的輸出,缺點是seaborn的視覺化輸出結果有時可能不能滿足要求,而matplotlib則可以高度定製化繪圖實現符合心意的輸出,但是相應的matplotlib的引數更復雜一些。

下面分享一個用matplotlib和seaborn完成優衣庫銷售資料分析視覺化案例

背景:根據提供的資料回答如下三個問題

1。整體銷售情況隨著時間的變化是怎樣的?

2。不同產品的銷售情況是怎樣的?顧客偏愛哪一種購買方式?

3。銷售額和產品成本之間的關係怎麼樣?

資料鏈接:

https://

pan。baidu。com/s/1MqtOU2

lilcBFRnLF9_3iMA

提取碼:

m398

我是用Anaconda中自帶的Jupyter Notebook練習程式設計的

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

進入正題

首先我們把需要的包調進來,然後匯入資料

python資料視覺化案例

pandas和numpy是兩個常用的資料分析包,matplotlib和seaborn是用來實現視覺化的,我這裡匯入資料用的是絕對路徑,利用pandas包中的read_csv命令把csv檔案匯入進來。

透過info()命令檢視資料集長什麼樣子

python資料視覺化案例

info()命令可以查看錶中有哪些列別和其對應的資料型別,還可以方便檢視有無缺失值,這裡可以看到每列都是22293行,看上去好像沒有缺失值。

python資料視覺化案例

再利用head()函式檢視前5列,head()預設前5列,當然也可以用head(10)檢視前10列,與head()相對的tail()命令是檢視檔案的最後5行。

python資料視覺化案例

product(產品類別),customer(顧客人數),revenue(銷售額),order(訂單數量),quant(銷售數量),unit_cost(單件產品成本)為產品類資料也是分析著重圍繞的重點資料。

然後我們用describe()檢視一下資料有沒有異常值

python資料視覺化案例

describe()命令可以檢視資料的行數(count),平均數(mean),標準差(std),最大最小值以及四分位數。發現有個明顯的異常值是revenue的最小值是負值,而且revenue的最大值比上四分位數大了許多,可以看一下revenue極值的數量,如果比較少可以刪除清晰分析結果。

python資料視覺化案例

這裡根據revenue的值利用‘cut’函式建一個數據桶對renvenue進行分類,right=False表示分類區間為左閉右開。

結果發現renvenue大於2000的值只有62個,以及一個小於0的負值,數量不多可以刪除。

這裡用‘&’運算子,表示邏輯‘與’,下圖為運算子作用表。

python資料視覺化案例

表中gender_group和age_group裡存在Unkown值(應是Unknown資料來源寫錯了),先將其轉換成null值,再確認缺失值佔比,如果佔比很少,則可以刪除而對接下來的分析幾乎無影響,這裡要用到numpy中的np。nan命令

python資料視覺化案例

loc[unq。age_group==‘Unkown’,‘age_group’]=np。nan表示取

age_group’列中所有age_group值為‘Unkown’的行賦值為np。nan也就是null值。

python中 ==為篩選條件,=為賦值

發現缺失值佔比很少,可以刪除

python資料視覺化案例

直接用dropna刪除為空值的行,inplace=True表示直接對原始物件修改,不建立返回新的改變物件。

資料清洗結束

1。整體銷售情況隨著時間的變化是怎樣的?

時間上的列是wkd_ind(只分了工作日和週末),銷售情況可以看customer(顧客人數),revenue(銷售額),order(訂單數量),quant(銷售數量),這裡我們選銷售額。

透過柱狀圖對比工作日和週末的銷售額情況。

python資料視覺化案例

透過seaborn中的barplot畫柱狀圖,這裡barplot對比的是revenue的

平均值

,如果要看其他值可以引入‘estimator’引數,從describe()中

發現工作日的銷售額度均高於週末的。

2。不同產品的銷售情況是怎樣的?顧客偏愛哪一種購買方式?

同樣的透過柱狀圖分析不同產品類別對應的銷售額比較。

python資料視覺化案例

python資料視覺化案例

出現了很多warning,並且柱狀圖下方類別顯示不出來,font說明這是由於字型顯示的問題,換一種可以顯示的字型

https://

segmentfault。com/a/1190

000005144275

具體方法可以看下上方連結

python資料視覺化案例

可以把柱狀圖按照從大到小的順序排列嗎?當然可以。

可以先做一個索引排序

python資料視覺化案例

按照revenue的平均值進行從大到小(ascending=False)的排序,然後輸出index

python資料視覺化案例

sort_values()是python中常用來排序的函式,具體使用可以參考上圖。

python資料視覺化案例

將索引序列給到order,這樣柱狀圖就可以按照從大到小展示。

發現毛衣,配件的平均銷售額最高,短褲和襪子的平均銷售額最低。

顧客偏愛哪一種購買方式?

這個問題可以透過分析不同類別的客戶線上線下的購買方式佔比。

python資料視覺化案例

上圖為透過分析

不同城市

的客戶在線上線下購買商品的總額的柱狀對比圖,

圖上沒有深圳,杭州北京南京等城市的線上資料,可能資料來源不是很可靠,上海,重慶,西安的客戶更偏向於線下購物;因為資料來源有點問題,從總量上就不對比了。

透過分析

不同性別

的客戶:

python資料視覺化案例

這邊性別有未知的,前面資料清洗沒有做到位。

無論男女,都更偏好線下交易。

python資料視覺化案例

但是如果看平均值的話會發現線上交易的銷售平均額度都高於線下。

這個也許是因為優衣庫只有滿200才能免運費,或者線上優惠券比較多從而消費比較多

透過分析

不同年齡

的客戶:

python資料視覺化案例

從年齡上分析,這個比較明顯,都是線下的總額高於線上。

3。銷售額和產品成本之間的關係怎麼樣?

透過銷售額和產品成本可以看出商品的利潤,我們可以看下不同產品的利潤如何。

python資料視覺化案例

我們新建一列[‘margin’]來記錄利潤,利潤=單件銷售額-單件成本

python資料視覺化案例

發現毛衣,裙子,配件的利潤均值最高

平均的利潤是正的,那是否有個別產品的利潤是負的呢?利用箱線圖可以觀察

這裡我們用到SNS總的‘boxplot’

python資料視覺化案例

發現毛衣雖然平均利潤高但是有許多產品是負利潤的,T恤有很多高利潤的產品,這可能說明優衣庫經常進行毛衣的促銷活動,從總體角度來看活動可能帶動了毛衣的銷量提升了產品的總利潤。

如果我們要來看銷售額和成本是否有相關性,該怎麼看呢?可以用熱力圖分析

python資料視覺化案例

我們可以分析‘利潤’,‘單件銷售額’,‘單件成本’三個變數的相關性,用corr()函式分析,可以發現‘利潤’和‘單件銷售額’有很高的正相關性。

python資料視覺化案例

可以呼叫seaborn中的heatmap()畫熱力圖,顏色越淺表示相關性越高,從圖中可以清晰地看出margin和unit_revenue的相關性很高,銷售額和單件成本也是正相關,

說明產品成本越高,銷售額越高,業務上可以多引入高階商品。