Python數(shù)據(jù)分析與應(yīng)用案例教程 第5章_第1頁
Python數(shù)據(jù)分析與應(yīng)用案例教程 第5章_第2頁
Python數(shù)據(jù)分析與應(yīng)用案例教程 第5章_第3頁
Python數(shù)據(jù)分析與應(yīng)用案例教程 第5章_第4頁
Python數(shù)據(jù)分析與應(yīng)用案例教程 第5章_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章Matplotlib數(shù)據(jù)可視化簽到掃碼下載文旌課堂APP掃碼簽到(2022.3.2515:00至2022.3.2515:10)簽到方式教師通過“文旌課堂APP”生成簽到二維碼,并設(shè)置簽到時(shí)間,學(xué)生通過“文旌課堂APP”掃描“簽到二維碼”進(jìn)行簽到。。Matplotlib數(shù)據(jù)可視化本章導(dǎo)讀通過前面章節(jié)的學(xué)習(xí),我們學(xué)會(huì)了數(shù)據(jù)的預(yù)處理和分析,但同時(shí)也發(fā)現(xiàn)數(shù)據(jù)分析的結(jié)果都是數(shù)字,看起來很不直觀,而且在數(shù)據(jù)較多的情況下無法完全展示。此時(shí),可以通過圖表等可視化技術(shù)直觀地展示數(shù)據(jù)信息,幫助我們快速了解數(shù)據(jù)的變化趨勢(shì)、對(duì)比結(jié)果、所占比例等。于是,Python提供了Matplotlib庫對(duì)數(shù)據(jù)進(jìn)行可視化展示和分析。

第5章Matplotlib數(shù)據(jù)可視化學(xué)習(xí)目標(biāo)

第5章 了解圖形的基本要素,掌握繪圖的基本步驟和設(shè)置圖形樣式的方法。 掌握繪制折線圖的方法。 掌握繪制直方圖的方法。 掌握繪制柱狀圖的方法。 掌握繪制餅狀圖的方法。 掌握繪制散點(diǎn)圖的方法。Matplotlib數(shù)據(jù)可視化素質(zhì)目標(biāo)

第5章 理解國(guó)家大數(shù)據(jù)戰(zhàn)略,構(gòu)建大數(shù)據(jù)思維和時(shí)代意識(shí)。 鍛煉具體問題具體分析的思維方法,培養(yǎng)一絲不茍的工作態(tài)度,增強(qiáng)積極主動(dòng)尋求解決方法的意識(shí)。 掌握繪制箱形圖的方法。 能根據(jù)數(shù)據(jù)的特點(diǎn)選擇合適的可視化圖形對(duì)數(shù)據(jù)進(jìn)行分析和展示。Content第5章常用圖表的繪制繪圖基礎(chǔ)5.1繪圖基礎(chǔ)第5章Matplotlib數(shù)據(jù)可視化使用Matplotlib實(shí)現(xiàn)數(shù)據(jù)可視化的圖表有很多種,但每一種圖表一般都是由畫布、繪圖區(qū)、圖表標(biāo)題、坐標(biāo)軸、坐標(biāo)軸標(biāo)題、圖例、文本標(biāo)簽、網(wǎng)格線等組成,如下圖所示。5.1繪圖基礎(chǔ)5.1.1圖形的基本要素5.1繪圖基礎(chǔ)(1)畫布:繪圖窗口中的白色區(qū)域,作為其他組成部分的容器。(2)繪圖區(qū):顯示圖形的矩形區(qū)域,一張畫布中可以包含多個(gè)繪圖區(qū)。(3)圖表標(biāo)題:說明圖表的內(nèi)容,如“學(xué)生各學(xué)期成績(jī)分析”。(4)坐標(biāo)軸及坐標(biāo)軸標(biāo)題:坐標(biāo)軸是標(biāo)識(shí)分類或數(shù)值大小的水平和垂直線,即x軸和y軸,具有標(biāo)定數(shù)據(jù)值的刻度,如x軸的“高一第一學(xué)期期中”、y軸的102等;坐標(biāo)軸標(biāo)題用于說明坐標(biāo)軸數(shù)據(jù)的含義,如x軸的標(biāo)題“學(xué)期”、y軸的標(biāo)題“成績(jī)”。(5)圖例:說明圖表的線條、顏色或標(biāo)記。(6)文本標(biāo)簽:為數(shù)據(jù)添加說明文字。(7)網(wǎng)格線:貫穿繪圖區(qū)的線條,衡量數(shù)據(jù)的數(shù)值標(biāo)準(zhǔn)。使用Matplotlib庫(使用之前須安裝)繪制圖表時(shí),最常使用的是其中的pyplot模塊。因此,繪制圖形前,須導(dǎo)入pyplot模塊,其一般格式如下。5.1繪圖基礎(chǔ)5.1.2繪圖的基本步驟1.導(dǎo)入繪圖庫importmatplotlib.pyplotaspltpyplot模塊提供了figure()函數(shù)用于創(chuàng)建一張新的空白畫布,其一般格式如下。2.創(chuàng)建畫布figure(num=None,figsize=None,facecolor=None)其中,num表示畫布的編號(hào)或名稱,取整數(shù)表示編號(hào),取字符串表示名稱,默認(rèn)為編號(hào),從1開始,如果創(chuàng)建多張畫布,則編號(hào)會(huì)依次增加;figsize表示畫布的大小,為一個(gè)元組,分別表示寬度和高度,單位為英寸,默認(rèn)為(6.4,4.8);facecolor表示畫布的背景顏色,默認(rèn)為白色。該函數(shù)返回一個(gè)Figure對(duì)象。5.1繪圖基礎(chǔ)pyplot模塊提供了多種函數(shù)用于繪制圖形,最主要的是plot()函數(shù),其一般格式如下。3.繪制和顯示圖形在pyplot模塊中,默認(rèn)包含一個(gè)Figure對(duì)象。因此,如果只在一張畫布中繪制圖形,無須使用figure()函數(shù)創(chuàng)建畫布,當(dāng)需要多張畫布時(shí),再使用figure()函數(shù)。其中,[]表示可選參數(shù);x表示x軸數(shù)據(jù);y表示y軸數(shù)據(jù);fmt表示線條的樣式,具體內(nèi)容詳見5.1.3節(jié)。圖形繪制完成后,還需要使用pyplot模塊的show()函數(shù)顯示圖形。5.1繪圖基礎(chǔ)一張畫布中可以包含一個(gè)或多個(gè)子圖(即繪圖區(qū)),即一個(gè)Figure對(duì)象中可以包含一個(gè)或多個(gè)Axes對(duì)象。pyplot模塊提供了subplot()函數(shù)用于創(chuàng)建多個(gè)子圖,其一般格式如下。4.創(chuàng)建子圖plot([x],y,[fmt])subplot(nrows,ncols,index)5.1繪圖基礎(chǔ)pyplot模塊提供了title()函數(shù)用于設(shè)置圖表的標(biāo)題,其一般格式如下。5.設(shè)置圖表和坐標(biāo)軸標(biāo)題title(label)其中,nrows和ncols表示將畫布劃分為nrows行ncols列,默認(rèn)都為1;index表示子圖的編號(hào),取值范圍為1~nrows×ncols,在畫布中從左往右計(jì)算,默認(rèn)為1。例如,subplot()表示繪制一個(gè)子圖;subplot(2,3,5)表示將畫布劃分為2行3列,且子圖的編號(hào)為5,即第2行第2列的繪圖區(qū)。其中,label表示標(biāo)題字符串。6.設(shè)置文本標(biāo)簽pyplot模塊提供了text()函數(shù)用于設(shè)置文本標(biāo)簽,其一般格式如下。xlabel(xlabel)ylabel(ylabel)text(x,y,s,**kwargs)pyplot模塊還提供了xlabel()函數(shù)和ylabel()函數(shù)用于分別設(shè)置x軸和y軸的標(biāo)題,其一般格式如下。其中,x和y表示需要設(shè)置標(biāo)簽的數(shù)據(jù)的x軸和y軸坐標(biāo);s表示標(biāo)簽的文本,為字符串;**kwargs表示標(biāo)簽的參數(shù),如fontsize=12表示字體大小為12、ha='center'表示垂直對(duì)齊方式為居中、va='left'表示水平對(duì)齊方式為左對(duì)齊。5.1繪圖基礎(chǔ)7.設(shè)置圖例其中,labels表示圖例的文本,為字符串或字符串列表;loc表示圖例顯示的位置,默認(rèn)為“best”,具體的位置參數(shù)取值如表5-1所示。legend(labels,loc)pyplot模塊提供了legend()函數(shù)用于設(shè)置圖例,其一般格式如下。5.1繪圖基礎(chǔ)此處,需要特別注意的是,由于圖例中會(huì)使用圖形的樣式,因此設(shè)置圖例須在圖形繪制完成后進(jìn)行。5.1繪圖基礎(chǔ)pyplot模塊提供了grid()函數(shù)用于設(shè)置網(wǎng)格線,其一般格式如下。8.設(shè)置網(wǎng)格線當(dāng)設(shè)置一個(gè)圖例時(shí),會(huì)出現(xiàn)文本顯示不全的問題。此時(shí),可以將圖例的文本使用括號(hào)括起來,然后在文本后加一個(gè)逗號(hào),如legend(('語文',))。grid(axis='both')其中,axis表示網(wǎng)格線的方向,取“x”表示顯示x軸網(wǎng)格線,取“y”表示顯示y軸網(wǎng)格線,取“both”表示顯示x軸和y軸網(wǎng)格線,默認(rèn)為“both”。5.1繪圖基礎(chǔ)pyplot模塊提供了xticks()函數(shù)和yticks()函數(shù)用于分別設(shè)置x軸和y軸的刻度,其一般格式如下。9.設(shè)置坐標(biāo)軸刻度xticks(locs,[labels],rotation)yticks(locs,[labels],rotation)其中,locs表示坐標(biāo)軸上的刻度,為數(shù)值型數(shù)組;labels表示刻度的標(biāo)簽,也為數(shù)組,為可選參數(shù);rotation表示坐標(biāo)軸刻度及其標(biāo)簽?zāi)鏁r(shí)針旋轉(zhuǎn)的角度。當(dāng)locs和labels同時(shí)設(shè)置時(shí),只顯示labels的值。pyplot模塊可以使用rcParams參數(shù)修改圖形的各種默認(rèn)屬性,包括畫布大小,線條寬度、類型和標(biāo)記及其大小,中文字體及其大小,坐標(biāo)軸刻度顯示方向,顏色循環(huán)等。常用的rcParams參數(shù)如表5-2所示。5.1繪圖基礎(chǔ)5.1.3圖形樣式設(shè)置5.1繪圖基礎(chǔ)5.1繪圖基礎(chǔ)5.1繪圖基礎(chǔ)通過rcParams參數(shù)可以統(tǒng)一設(shè)置所有圖形的樣式,還可以通過繪制圖形的函數(shù)分別設(shè)置每個(gè)圖形的樣式,包括顏色、類型和標(biāo)記,如plot()。其中,顏色取值可以有下面3種。(1)指定的Tk標(biāo)準(zhǔn)顏色字符串,如“Red”(紅色)、“Yellow”(黃色)、“#ff0000”(紅色)等。(2)使用r、g、b元組表示的RGB顏色,r、g、b取值范圍為0~1,如(1.0,0,0)(紅色)。(3)顏色的縮寫,但只限于8種顏色,包括“b”(藍(lán)色)、“g”(綠色)、“r”(紅色)、“c”(藍(lán)綠色)、“m”(洋紅色)、“y”(黃色)、“k”(黑色)、“w”(白色)。當(dāng)使用顏色的縮寫時(shí),可以與類型、標(biāo)記組合設(shè)置線條樣式,如“r:o”表示紅色的實(shí)心圓虛線。5.1繪圖基礎(chǔ)在plot()函數(shù)中可以使用顏色的縮寫、類型和標(biāo)記的組合方法設(shè)置線條樣式,如“y-*”表示黃色的星形實(shí)線。如果不設(shè)置線條類型,則只會(huì)繪制數(shù)據(jù)的點(diǎn),不會(huì)繪制連接的線條,即散點(diǎn)圖?!纠?-5】在同一子圖中繪制學(xué)生各學(xué)期的語文、數(shù)學(xué)和英語成績(jī)分析圖?!締栴}分析】使用rcParams參數(shù)設(shè)置畫布大小[(10,6)]、中文字體(黑體)、坐標(biāo)軸刻度線顯示方向(向內(nèi));然后使用plot()函數(shù)繪制圖形,并設(shè)置語文圖形樣式為上三角雙畫線、數(shù)學(xué)圖形樣式為實(shí)心圓點(diǎn)畫線、英語圖形樣式為紅色小菱形虛線;最后使用列表同時(shí)設(shè)置3個(gè)圖形的圖例。5.1繪圖基礎(chǔ)【參考代碼】importmatplotlib.pyplotaspltimportpandasaspddf=pd.read_excel('學(xué)生各學(xué)期成績(jī)表.xlsx')plt.rcParams['figure.figsize']=(10,6)plt.rcParams['font.sans-serif']='SimHei‘plt.rcParams['xtick.direction']='in'plt.rcParams['ytick.direction']='in'plt.title('學(xué)生各學(xué)期成績(jī)分析')plt.xlabel('學(xué)期')plt.ylabel('成績(jī)')【例5-5】在同一子圖中繪制學(xué)生各學(xué)期的語文、數(shù)學(xué)和英語成績(jī)分析圖?!緟⒖即a】importmatplotlib.pyplotaspltimportpandasaspddf=pd.read_excel('學(xué)生各學(xué)期成績(jī)表.xlsx')plt.rcParams['figure.figsize']=(10,6)plt.rcParams['font.sans-serif']='SimHei'【問題分析】使用rcParams參數(shù)設(shè)置畫布大小[(10,6)]、中文字體(黑體)、坐標(biāo)軸刻度線顯示方向(向內(nèi));然后使用plot()函數(shù)繪制圖形,并設(shè)置語文圖形樣式為上三角雙畫線、數(shù)學(xué)圖形樣式為實(shí)心圓點(diǎn)畫線、英語圖形樣式為紅色小菱形虛線;最后使用列表同時(shí)設(shè)置3個(gè)圖形的圖例。5.1繪圖基礎(chǔ)plt.xticks(rotation=15)plt.grid()x=df['學(xué)期']plt.plot(x,df['語文'],'--^')plt.plot(x,df['數(shù)學(xué)'],'-.o')plt.plot(x,df['英語'],'r:d')plt.legend(['語文','數(shù)學(xué)','英語'])plt.show()【運(yùn)行結(jié)果】程序運(yùn)行結(jié)果如下圖所示。5.1繪圖基礎(chǔ)pyplot模塊還提供了rc()函數(shù)用于同時(shí)設(shè)置多個(gè)參數(shù)。例如,設(shè)置線條的類型和標(biāo)記,可以使用下面代碼實(shí)現(xiàn)。rc('lines',linestyle='--',marker='.')5.1繪圖基礎(chǔ)5.2常用圖表的繪制第5章Matplotlib數(shù)據(jù)可視化在數(shù)據(jù)的可視化中,常用的圖表有折線圖、直方圖、柱狀圖、餅狀圖、散點(diǎn)圖和箱形圖等。Matplotlib的pyplot模塊提供了多種函數(shù)用于繪制圖表,下面介紹常用圖表的繪制方法。5.2常用圖表的繪制5.2.1折線圖折線圖是一種將數(shù)據(jù)點(diǎn)按照順序連接起來的圖形,它直觀地反映了數(shù)據(jù)的變化趨勢(shì),如表示氣溫、月銷量、平臺(tái)訪問量等的趨勢(shì)。一般用x軸表示數(shù)據(jù)的類別,用y軸表示其對(duì)應(yīng)的值。繪制折線圖主要使用plot()函數(shù),5.1節(jié)中繪制的圖表都屬于折線圖。5.2常用圖表的繪制【例5-6】使用折線圖按行業(yè)分析2003—2020年城鎮(zhèn)單位就業(yè)人員年平均工資的變化趨勢(shì)?!締栴}分析】首先導(dǎo)入“城鎮(zhèn)單位就業(yè)人員年平均工資.xlsx”文件“按行業(yè)”工作表中的數(shù)據(jù)(見下圖),刪除“城鎮(zhèn)單位”行及“2001年”和“2002年”列的數(shù)據(jù),并將數(shù)據(jù)按列標(biāo)簽進(jìn)行升序排序;接著使用rcParams參數(shù)設(shè)置畫布大小、中文字體、顏色循環(huán)(隨機(jī)生成大小為行數(shù)的r、g、b元組列表);然后設(shè)置圖表、x軸和y軸標(biāo)題;最后以年份為x軸數(shù)據(jù)、每個(gè)行業(yè)的平均資為y軸數(shù)據(jù)繪制折線圖,并以行標(biāo)簽設(shè)置圖例。5.2常用圖表的繪制5.2常用圖表的繪制【參考代碼】importmatplotlib.pyplotaspltimportpandasaspdfromcyclerimportcyclerimportnumpyasnpdf=pd.read_excel('城鎮(zhèn)單位就業(yè)人員年平均工資.xlsx',sheet_name='按行業(yè)',index_col=0)df.drop('城鎮(zhèn)單位',inplace=True)df.drop(columns=['2001年','2002年'],inplace=True)df.sort_index(axis=1,inplace=True)plt.rcParams['figure.figsize']=(12,8)plt.rcParams['font.sans-serif']='SimHei'colors=[]#生成20個(gè)r、g、b元組表示的RGB顏色,并添加到colors列表中foriinrange(len(df)):r=np.random.rand() #生成0~1的隨機(jī)小數(shù)并賦給rg=np.random.rand() #生成0~1的隨機(jī)小數(shù)并賦給gb=np.random.rand() #生成0~1的隨機(jī)小數(shù)并賦給bcolors.append((r,g,b))plt.rcParams['p_cycle']=cycler(color=colors)plt.title('2003—2020年按行業(yè)分城鎮(zhèn)單位就業(yè)人員年平均工資折線圖')plt.xlabel('年份')plt.ylabel('平均工資/元')x=df.columns5.2常用圖表的繪制forindexindf.index:plt.plot(x,df.loc[index])plt.legend(df.index)plt.show()c【運(yùn)行結(jié)果】程序運(yùn)行結(jié)果如下圖所示?!窘Y(jié)果分析】從上圖可以看出,2003—2020年這18年來,所有行業(yè)城鎮(zhèn)單位就業(yè)人員的平均工資都在增長(zhǎng),除采礦業(yè)在2015年和2016年、住宿和餐飲業(yè)在2020年有小幅度降低。但是每個(gè)行業(yè)增長(zhǎng)的速度有很大差距,其中信息傳輸、計(jì)算機(jī)服務(wù)和軟件業(yè)增長(zhǎng)速度最快。該圖與第2章典型案例的數(shù)據(jù)分析相比,非常直觀地展現(xiàn)了數(shù)據(jù)的趨勢(shì)及其之間的差別。5.2常用圖表的繪制5.2常用圖表的繪制5.2.2直方圖前面章節(jié)已經(jīng)介紹,可以使用直方圖分析數(shù)據(jù)是否符合正態(tài)分布,它是數(shù)值型數(shù)據(jù)分布的精確圖表,是一個(gè)連續(xù)變量的概率分布估計(jì),如表示成績(jī)區(qū)間的學(xué)生數(shù)量、年齡區(qū)間的員工數(shù)量等。一般用x軸表示數(shù)據(jù)所屬的區(qū)間,用y軸表示其對(duì)應(yīng)數(shù)據(jù)的數(shù)量或占比。pyplot模塊提供了hist()函數(shù)用于繪制直方圖,其一般格式如下。hist(x,bins=None,range=None,color=None,edgecolor=None)其中,x表示x軸的數(shù)據(jù),為數(shù)組或數(shù)組序列;bins表示繪制矩形柱的個(gè)數(shù)或數(shù)據(jù)的分布區(qū)間,如果為整數(shù),表示繪制矩形柱的個(gè)數(shù),如果為序列,表示數(shù)據(jù)的分布區(qū)間,如[0,25,50,75,100]表示數(shù)據(jù)的下限值和上限值分別為0和100、間隔為25的4個(gè)區(qū)間,每個(gè)區(qū)間不包含終點(diǎn),默認(rèn)為10;range表示bins的取值范圍,默認(rèn)為數(shù)據(jù)的最小值和最大值;color表示矩形柱的填充顏色;edgecolor表示矩形柱的邊框顏色。5.2常用圖表的繪制【例5-7】使用直方圖分析餐飲訂單中菜品數(shù)量在不同價(jià)格區(qū)間的分布情況。【問題分析】導(dǎo)入“餐飲綜合數(shù)據(jù).xlsx”文件“訂單詳情表”工作表中的數(shù)據(jù)(見右圖);然后以價(jià)格為x軸數(shù)據(jù)、數(shù)量為y軸數(shù)據(jù)繪制直方圖,并設(shè)置矩形柱的個(gè)數(shù)為12、填充顏色為(0.894,0,0.498)、邊框顏色為黑色。5.2常用圖表的繪制【參考代碼】importmatplotlib.pyplotaspltimportpandasaspddf=pd.read_excel('餐飲綜合數(shù)據(jù).xlsx',sheet_name='訂單詳情表',index_col=0)plt.rcParams['font.sans-serif']='SimHei'x=df['價(jià)格']plt.xlabel('菜品價(jià)格/元')plt.ylabel('菜品數(shù)量')plt.title('不同價(jià)格區(qū)間菜品數(shù)量分布直方圖')plt.hist(x,bins=12,color=(0.894,0,0.498),edgecolor='k')plt.show()5.2常用圖表的繪制【運(yùn)行結(jié)果】程序運(yùn)行結(jié)果如右圖所示?!窘Y(jié)果分析】從上圖可以看出,該餐飲訂單信息中菜品價(jià)格不超過200元,小于100元的菜品數(shù)量占絕大部分,說明低價(jià)格區(qū)間的菜品比較受歡迎,可為商家新菜品定價(jià)提供參考。5.2常用圖表的繪制5.2.3柱狀圖柱狀圖是一種用矩形柱展示不同條件下數(shù)據(jù)的變化或?qū)Ρ惹闆r的圖表,可以垂直繪制,也可以水平繪制,它的長(zhǎng)度與其表示的數(shù)據(jù)值成正比,如表示每個(gè)科目不同班級(jí)學(xué)生的平均成績(jī)、每個(gè)月不同商品的銷售額等。柱狀圖一般用x軸表示數(shù)據(jù)所屬的類別,用y軸表示數(shù)據(jù)的統(tǒng)計(jì)值。pyplot模塊提供了bar()函數(shù)用于繪制垂直柱狀圖,其一般格式如下。bar(x,height,width=0.8,color=None,edgecolor=None)其中,x表示x軸的數(shù)據(jù);height表示垂直矩形柱的高度(即y軸數(shù)據(jù));width表示矩形柱的寬度,默認(rèn)為0.8;color表示矩形柱的填充顏色;edgecolor表示矩形柱的邊框顏色。5.2常用圖表的繪制pyplot模塊提供了barh()函數(shù)用于繪制水平柱狀圖,其一般格式如下。barh(y,width,height=0.8,color=None,edgecolor=None)其中,y表示y軸的數(shù)據(jù);width表示水平矩形柱的長(zhǎng)度(即x軸數(shù)據(jù));height表示矩形柱的寬度,默認(rèn)為0.8。【例5-8】使用柱狀圖對(duì)比分析每個(gè)季度不同分店的銷售額?!締栴}分析】導(dǎo)入“產(chǎn)品銷售表.xlsx”文件“第1分店”“第2分店”“第3分店”工作表中的數(shù)據(jù)(見下圖);接著將每個(gè)分店的數(shù)據(jù)添加到DataFrame對(duì)象列表中;然后循環(huán),循環(huán)次數(shù)為列表的長(zhǎng)度,在循環(huán)中,獲取列表的每個(gè)元素,將其進(jìn)行缺失值和重復(fù)值處理,并按季度分組及求和聚合,再以行索引(季度)為x軸數(shù)據(jù)、銷售額為y軸數(shù)據(jù)繪制柱狀圖;最后設(shè)置中文字體、y軸標(biāo)題(銷售額)、圖例(分店名稱)、x軸刻度標(biāo)簽(季度名稱)和圖表標(biāo)題。5.2常用圖表的繪制5.2常用圖表的繪制【參考代碼】importmatplotlib.pyplotaspltimportpandasaspddf=pd.read_excel('產(chǎn)品銷售表.xlsx',sheet_name=['第1分店','第2分店','第3分店'])df_list=[]df_list.append(df['第1分店'])df_list.append(df['第2分店'])df_list.append(df['第3分店'])width=0.3foriinrange(len(df_list)):df_temp=df_list[i]#刪除數(shù)量列包含缺失值的行

df_temp.dropna(axis=0,subset=['數(shù)量'],inplace=True)df_temp.drop_duplicates(inplace=True) #刪除完全重復(fù)的行

df_temp=df_temp.groupby('季度').agg('sum')x=df_temp.indexheight=df_temp['銷售額(萬元)']plt.bar(x+width*i,height,width)plt.rcParams['font.sans-serif']='SimHei'plt.ylabel('銷售額/萬元')5.2常用圖表的繪制5.2常用圖表的繪制plt.legend(['第1分店','第2分店','第3分店'])plt.xticks([1,2,3,4],['第1季度','第2季度','第3季度','第4季度'])plt.title('每個(gè)季度不同分店銷售額柱狀圖')plt.show()【運(yùn)行結(jié)果】程序運(yùn)行結(jié)果如下圖所示?!境绦蛘f明】繪制多柱狀圖時(shí),從第2次繪制起,每次繪制的x軸數(shù)據(jù)應(yīng)在前一次的基礎(chǔ)上增加寬度的值,否則多個(gè)矩形柱會(huì)重疊?!窘Y(jié)果分析】從上圖可以看出,第2分店第2季度的銷售額最高,第1分店第3季度的銷售額最低。該圖與第3章典型案例的數(shù)據(jù)分析相比,非常直觀地展現(xiàn)了每個(gè)季度不同分店銷售額的對(duì)比情況。5.2常用圖表的繪制5.2常用圖表的繪制5.2.4餅狀圖餅狀圖常用于顯示各個(gè)部分在整體中所占的比例,它可以清楚地反映部分與部分、部分與整體之間的數(shù)量關(guān)系,如表示每個(gè)產(chǎn)品線占公司總研發(fā)金額的比例、每個(gè)分店占總體銷售額的比例等。pyplot模塊提供了pie()函數(shù)用于繪制餅狀圖,其一般格式如下。pie(x,labels=None,colors=None,autopct=None)其中,x表示扇區(qū)的數(shù)據(jù)序列;labels表示扇區(qū)標(biāo)簽的字符串序列;colors表示扇區(qū)的顏色序列,默認(rèn)為顏色循環(huán);autopct表示每個(gè)扇區(qū)所占比例的格式字符串,放置在扇區(qū)內(nèi),如“%.2f%%”表示兩位小數(shù)的百分比格式。5.2常用圖表的繪制5.2.5散點(diǎn)圖前面章節(jié)已經(jīng)介紹,可以使用散點(diǎn)圖分析變量之間的相關(guān)性,表示因變量變化的大致趨勢(shì)。散點(diǎn)圖與折線圖類似,也是由一個(gè)個(gè)點(diǎn)構(gòu)成,但散點(diǎn)圖的點(diǎn)之間不會(huì)按照前后關(guān)系使用線條連接,因此可以使用plot()函數(shù)繪制散點(diǎn)圖。pyplot模塊還提供了scatter()函數(shù)用于繪制散點(diǎn)圖,其一般格式如下。scatter(x,y,s=None,c=None,marker=None)其中,x和y表示x軸和y軸的數(shù)據(jù);s表示點(diǎn)的大?。籧表示點(diǎn)的顏色;marker表示點(diǎn)的標(biāo)記,取值可參見表5-3。5.2常用圖表的繪制5.2.6箱形圖前面章節(jié)已經(jīng)介紹,可以使用箱形圖檢測(cè)異常值,由于它不受異常值的影響,可以以一種相對(duì)穩(wěn)定的方式描述數(shù)據(jù)的離散分布情況。箱形圖能顯示一組數(shù)據(jù)的最大值、最小值、中位數(shù)和上下四分位數(shù),可以粗略地看出數(shù)據(jù)是否具有對(duì)稱性、分布的分散程度等,特別適用于對(duì)幾組數(shù)據(jù)的比較。pyplot模塊提供了boxplot()函數(shù)用于繪制箱形圖,其一般格式如下。boxplot(x,notch=False,vert=True,whis=None,positions=None,widths=None,patch_artist=None,showmeans=None,boxprops=None,meanprops=None)5.2常用圖表的繪制(1)x表示繪制箱形圖的數(shù)據(jù),當(dāng)x為對(duì)象序列時(shí),可以同時(shí)繪制多個(gè)箱形圖,但參數(shù)設(shè)置須一致,如果每個(gè)箱形圖需要設(shè)置不同的參數(shù),可以使用多個(gè)boxplot()函數(shù)。(2)notch表示是否以凹口形式顯示箱形圖,取True(凹口)或False(非凹口),默認(rèn)為False。(3)vert表示是否垂直繪制箱形圖,取True(垂直繪制)或False(水平繪制),默認(rèn)為True。(4)whis表示指定上下限值與上下四分位數(shù)的距離,默認(rèn)為1.5。例如,使用Q1和Q2分別表示上四分位數(shù)和下四分位數(shù),則上限值=Q1+(Q1?Q2)*1.5,下限值=Q2?(Q1?Q2)*1.5。(5)positions表示箱形圖的位置,默認(rèn)為[0,1,2,3…]。(6)widths表示箱體的寬度,默認(rèn)為0.5。5.2常用圖表的繪制(7)patch_artist表示是否填充箱體的顏色,取True(填充)或False(不填充),默認(rèn)為False。(8)showmeans表示是否顯示均值,取True(顯示)或False(不顯示),默認(rèn)為False。(9)boxprops表示設(shè)置箱體的屬性,如邊框顏色(edgecolor)、填充色(facecolor)等。(10)meanprops表示設(shè)置均值的屬性,如標(biāo)記的大小、顏色等。1.案例內(nèi)容典型案例

——某餐廳一周訂單信息分析飲食是人類的剛性需求,生活中人們都離不開餐飲,因此餐飲業(yè)是最具競(jìng)爭(zhēng)力的行業(yè)之一。通過對(duì)餐廳訂單數(shù)據(jù)全面、客觀、準(zhǔn)確的分析,可以增強(qiáng)競(jìng)爭(zhēng)優(yōu)勢(shì),提升盈利能力,提高利潤(rùn)率,并擴(kuò)大客戶群。本案例將通過折線圖、柱狀圖和餅狀圖等可視化手段分析某餐廳一周訂單信息。2.案例分析(1)導(dǎo)入“餐廳訂單信息.xlsx”文件中的數(shù)據(jù),文件內(nèi)容詳見教材所示。(2)使用rcParams參數(shù)設(shè)置中文字體。(3)創(chuàng)建新畫布,繪制一周菜品點(diǎn)單數(shù)量前10名柱狀圖。將數(shù)據(jù)按菜品名稱分組及對(duì)數(shù)值求和聚合;然后將數(shù)據(jù)按數(shù)量進(jìn)行降序排序,并獲取前10行數(shù)據(jù);最后以前10行數(shù)據(jù)的行標(biāo)簽為x軸數(shù)據(jù)、以數(shù)量為y軸數(shù)據(jù)繪制矩形柱寬為0.3的柱狀圖,并設(shè)置x軸、y軸和圖表標(biāo)題。(4)創(chuàng)建新畫布,繪制一周各分店每天消費(fèi)金額折線圖。將數(shù)據(jù)按店鋪名分組,并定義店鋪名列表,然后循環(huán)店鋪名分組。在循環(huán)中,將每組的第一個(gè)元素添加到店鋪名列表中;然后以第二個(gè)元素創(chuàng)建DataFrame對(duì)象,并將數(shù)據(jù)按日期分組及對(duì)數(shù)值求和聚合;最后以行標(biāo)簽為x軸數(shù)據(jù)、消費(fèi)金額為y軸數(shù)據(jù)繪制折線圖。循環(huán)結(jié)束后設(shè)置圖例(店鋪名)、x軸和y軸標(biāo)題、圖表標(biāo)題。(5)創(chuàng)建新畫布,繪制一周不同星級(jí)會(huì)員消費(fèi)金額餅狀圖。將數(shù)據(jù)按會(huì)員星級(jí)分組及對(duì)數(shù)值求和聚合;然后以聚合數(shù)據(jù)的消費(fèi)金額為扇區(qū)數(shù)據(jù)、行標(biāo)簽為扇區(qū)標(biāo)簽、兩位小數(shù)百分比為比例格式繪制餅狀圖,并設(shè)置圖表標(biāo)簽。典型案例

——某餐廳一周訂單信息分析3.案例實(shí)施【參考代碼】importmatplotlib.pyplotaspltimportpandasaspddf=pd.read_excel('餐廳訂單信息.xlsx')plt.rcParams['font.sans-serif']='SimHei'#繪制一周菜品點(diǎn)單數(shù)量前10名柱狀圖plt.figure(figsize=(12,5))df_temp=df.groupby('菜品名稱').agg('sum',numeric_only=True)df_temp=df_temp.sort_values('數(shù)量

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論