Python數(shù)據(jù)分析與可視化(第2版) 課件6.4 超市數(shù)據(jù)分析與可視化_第1頁
Python數(shù)據(jù)分析與可視化(第2版) 課件6.4 超市數(shù)據(jù)分析與可視化_第2頁
Python數(shù)據(jù)分析與可視化(第2版) 課件6.4 超市數(shù)據(jù)分析與可視化_第3頁
Python數(shù)據(jù)分析與可視化(第2版) 課件6.4 超市數(shù)據(jù)分析與可視化_第4頁
Python數(shù)據(jù)分析與可視化(第2版) 課件6.4 超市數(shù)據(jù)分析與可視化_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

6.4超市數(shù)據(jù)分析與可視化隨著互聯(lián)網(wǎng)與大數(shù)據(jù)的發(fā)展,電商楊業(yè)得到飛速發(fā)展,每天產(chǎn)生成千上萬的數(shù)據(jù),挖掘出其中的價(jià)值尤為重要。在電商超市數(shù)據(jù)分析中,分析的內(nèi)容主要包括三個(gè)方面:為高管提供盈利性分析,為運(yùn)營部門提供產(chǎn)品分析,為銷售部門提供客戶分析。一、數(shù)據(jù)源本案例包括三個(gè)數(shù)據(jù)集:supermarket.csv、category.xlsx、region.txt。1.supermarket.csvsupermarket.csv數(shù)據(jù)集包括字段:利潤率、產(chǎn)品ID、產(chǎn)品名稱、利潤、發(fā)貨日期、國家、城市、子類別、客戶ID、客戶名稱、折扣、數(shù)量、省、細(xì)分、訂單ID、訂單日期、郵寄方式、銷售額。數(shù)據(jù)源1如圖6-37所示。圖6-37數(shù)據(jù)源1(部分)2.region.txtregion.txt數(shù)據(jù)集包括字段:地區(qū)、省。數(shù)據(jù)源2如圖6-38所示。圖6-38數(shù)據(jù)源2(部分)3.category.xlsxcategory.xlsx數(shù)據(jù)集包括字段:子類別、類別。數(shù)據(jù)源3如圖6-39所示。圖6-39數(shù)據(jù)源3(部分)二、目標(biāo)1.統(tǒng)計(jì)銷售金額排名的前5的產(chǎn)品,找出熱銷商品。2.計(jì)算所有年份的利潤,分析利潤變化趨勢。3.計(jì)算2015-2018年的利潤環(huán)比。4.計(jì)算2016年中南地區(qū)辦公用品的平均每月利潤。5.分析不同地區(qū)的不同類別對于銷售金額的影響。6.根據(jù)不同地區(qū)的平均銷售額繪制條形圖,分析哪些地區(qū)的平均銷售額較高。7.根據(jù)不同月份的平均銷售額、平均利潤、平均利潤率,在同一個(gè)繪圖窗口中繪制多子圖柱形圖與折線圖,并分析哪些月份銷售和利潤情況較好。8.根據(jù)不同郵寄方式的利潤繪制環(huán)形圖,并分析哪些郵寄方式的利潤和較高。三、步驟步驟1:導(dǎo)入庫,設(shè)置參數(shù)。(1)導(dǎo)入所需要的庫pandas、numpy、matplotlib.pyplot。(2)利用pd.set_option解除顯示寬度的顯示,設(shè)置數(shù)據(jù)對齊。(3)利用rcParams設(shè)置相關(guān)參數(shù),將顯示字體設(shè)置為黑體,字體大小設(shè)置為15。步驟1代碼如下:importpandasaspdimportmatplotlib.pyplotaspltpd.set_option('display.unicode.east_asian_width',True)pd.set_option('display.width',None)plt.rcParams['font.sans-serif']=['Simhei']plt.rcParams['font.size']=15步驟2:讀入數(shù)據(jù),合并數(shù)據(jù),顯示數(shù)據(jù)形狀。(1)導(dǎo)入超市的銷售數(shù)據(jù)supermarket.csv、地區(qū)分布數(shù)據(jù)region.txt、商品類別數(shù)據(jù)category.xlsx(三個(gè)文件均存放在c:\data路徑中),將導(dǎo)入的數(shù)據(jù)命名為data1、data2、data3。其中,region.txt文件的分隔符是Tab,category.xlsx的數(shù)據(jù)在Sheet1工作表內(nèi)。(2)利用merge函數(shù)將data1、data2、data3三個(gè)數(shù)據(jù)按照合適的關(guān)鍵字進(jìn)行合并,合并方式為外連接,命名為data。(3)輸出data的行數(shù)、列數(shù)、列名以及前5行。步驟2(1)代碼如下:data1=pd.read_csv("c:/data/supermarket.csv")data2=pd.read_csv("c:/data/region.txt",sep='\t')data3=pd.read_excel("c:/data/category.xlsx",sheet_name='Sheet1')步驟2(2)代碼如下:data=pd.merge(data1,data2,how='outer',on='省')data=pd.merge(data,data3,how='outer',on='子類別')步驟2(3)代碼如下:print("數(shù)據(jù)的行數(shù)=%d\n數(shù)據(jù)的列數(shù)=%d"%(data.shape[0],data.shape[1]))print("數(shù)據(jù)的前5行為:\n",data.head())輸出結(jié)果如圖6-40所示。圖6-40步驟2輸出結(jié)果步驟3:數(shù)據(jù)預(yù)處理(1)將利潤率中%格式改為小數(shù)形式,如5%改為0.05。(2)刪除數(shù)據(jù)中“訂單ID”、“產(chǎn)品ID”、“客戶ID”三個(gè)字段相同數(shù)據(jù)的行,保留第一次出現(xiàn)的值。步驟3(1)代碼如下:print(data['利潤率'].head(3))data['利潤率']=data['利潤率'].apply(lambdax:x.replace("%",""))#去掉利潤率中的%data['利潤率']=data['利潤率'].astype("float")/100#將去掉%的數(shù)據(jù)再除以100print(data['利潤率'].head(3))輸出結(jié)果如圖6-41所示。圖6-41步驟3(1)輸出結(jié)果步驟3(2)代碼如下:data=data.drop_duplicates(subset=['訂單ID','產(chǎn)品ID','客戶ID'],keep='first')print("去重后的行數(shù)=",data.shape[0])輸出結(jié)果如圖6-42所示。圖6-42步驟3(2)輸出結(jié)果步驟4:時(shí)間序列處理(1)將發(fā)貨日期和訂單日期轉(zhuǎn)換為日期格式。(2)從開始時(shí)間(“訂單日期”)中分別抽取出年和月,并生成新變量“年”、“月”。步驟4(1)代碼如下:print(data[['發(fā)貨日期','訂單日期']].dtypes)data['發(fā)貨日期']=pd.to_datetime(data['發(fā)貨日期'])data['訂單日期']=pd.to_datetime(data['訂單日期'])print(data[['發(fā)貨日期','訂單日期']].dtypes)輸出結(jié)果如圖6-43所示。圖6-43步驟4輸出結(jié)果步驟4(2)代碼如下:data['年']=data['訂單日期'].dt.yeardata['月']=data['訂單日期'].dt.monthprint(data[['訂單日期','年','月']][:5])輸出結(jié)果如圖6-44所示。圖6-44步驟4輸出結(jié)果步驟5:描述性統(tǒng)計(jì)分析(1)統(tǒng)計(jì)銷售金額排名的前5的產(chǎn)品。(2)計(jì)算所有年份的利潤,并降序排序。(3)計(jì)算2016年中南地區(qū)辦公用品的平均每月利潤。步驟5(1)代碼如下:group_result1=data.groupby(by='產(chǎn)品名稱')['銷售額'].sum()group_result1=group_result1.sort_values(ascending=False)print("銷售金額排名的前5的產(chǎn)品:\n",group_result1.head())輸出結(jié)果如圖6-45所示。圖6-45步驟5(1)輸出結(jié)果步驟5(2)代碼如下:group_result2=data.groupby(by='年')['利潤'].sum()group_result2=group_result2.sort_values(ascending=False)print("每年的利潤為:\n",group_result2)輸出結(jié)果如圖6-46所示。圖6-46步驟5(2)輸出結(jié)果步驟5(3)代碼如下:loc_result=data.loc[(data['年']==2016)&(data['地區(qū)']=='中南')&(data['類別']=='辦公用品')]mean=loc_result['利潤'].sum()/12mean=round(mean,2)print("2016年中南地區(qū)辦公用品的平均每月利潤為:",mean)輸出結(jié)果如圖6-47所示。圖6-47步驟5(3)輸出結(jié)果步驟6:計(jì)算2015-2018年的利潤環(huán)比。步驟6代碼如下:years=group_result2.indexvalues=group_result2n=len(values)hb_list=[]foriinrange(n):ifi==0:hb=0else:hb=(values.iloc[i]-values.iloc[i-1])/values.iloc[i-1]print("%d年的環(huán)比=%.2f%%"%(years[i],hb*100))輸出結(jié)果如圖6-48所示。圖6-48步驟6輸出結(jié)果步驟7:交叉透視表分析(1)繪制不同地區(qū)的不同類別的訂單頻數(shù)的頻數(shù)交叉表。(2)繪制不同地區(qū)的不同類別的銷售額平均值的數(shù)據(jù)透視表。步驟7(1)和步驟7(2)代碼如下:importnumpyasnptab1=pd.crosstab(index=data['子類別'],columns=data['地區(qū)'])print("不同地區(qū)的不同類別的訂單頻數(shù)\n",tab1)tab2=pd.pivot_table(data,index='子類別',columns='地區(qū)',values='銷售額',aggfunc=np.mean)tab2=round(tab2,0)print("不同地區(qū)的不同類別的銷售額平均值\n",tab2)輸出結(jié)果如圖6-49和圖6-50所示。圖6-49步驟7(1)輸出結(jié)果圖6-50步驟7(2)輸出結(jié)果步驟8:繪制條形圖。將窗口大小設(shè)為(8,6),統(tǒng)計(jì)不同地區(qū)的平均銷售額。根據(jù)不同地區(qū)的平均銷售額繪制條形圖,條形的寬度為0.3,圖標(biāo)標(biāo)題設(shè)為“不同地區(qū)的平均銷售額”,添加銷售額總平均值作為輔助線,輔助線為紅色虛線。步驟8代碼如下:plt.rcParams['figure.figsize']=(8,6)result1=data.groupby(by='地區(qū)')['銷售額'].mean()rusult1_mean=data['銷售額'].mean()y=result1.indexwidth=result1hight=0.3plt.barh(y,width,hight)plt.title("不同類別的平均銷售額")plt.axvline(rusult1_mean,color='r',linestyle=':')plt.show()輸出結(jié)果如圖6-51所示。圖6-51步驟8輸出結(jié)果步驟9:繪制多子圖的柱形折線疊加圖(1)將窗口大小設(shè)為(10,8),創(chuàng)建3行1列子圖。(2)在3個(gè)子圖中,根據(jù)不同月份的平均銷售額、平均利潤、平均利潤率,繪制多子圖柱形圖與折線圖,其中橫坐標(biāo)為月份,縱坐標(biāo)分別為平均銷售額、平均利潤、平均利潤率,橫坐標(biāo)刻度為1到12,柱形圖的顏色為天藍(lán),折線圖的顏色為紅色虛線。步驟9(1)代碼如下:plt.rcParams['figure.figsize']=(10,8)fig,axes=plt.subplots(3,1)ax=axes.ravel()步驟9(2)代碼如下:y=['銷售額','利潤','利潤率']names=['平均銷售額','平均利潤','平均利潤率']fori,j,kinzip(range(3),y,names):result2=data.groupby(by='月')[j].mean()x=result2.indexy=result2ax[i].bar(x,y,color='skyblue')ax[i].plot(x,y,color='brown',linestyle='--')ax[i].set_ylabel(k)ax[i].set_xticks(np.arange(1,13))plt.show()輸出結(jié)果如圖6-52所示。圖6-52步驟9輸出結(jié)果步驟10:繪制環(huán)形圖。統(tǒng)計(jì)不同郵寄方式的利潤和,根據(jù)不同郵寄方式的利潤和繪制環(huán)形圖,內(nèi)部文本顏色大小設(shè)為深綠色、16,餅圖的外部文本顏色大小設(shè)為紅色、20,設(shè)置標(biāo)題為“不同郵政方式的利潤和”。步驟10代碼如下:result3=data.groupby(by='郵寄方式')['利潤'].sum()c=['darkorange','yellowgreen','skyblue','lightyellow']patches,text1,text2=plt.pie(x=result3,labels=result3.index,autopct='%.1f%%',colors=c,radius=1)foriintext1: i.set_size(20) i.set_color('red')foriintext2: i.set_size(16) i.set_color('darkgreen')plt.pie(x=[1],col

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論