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ù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

——某餐廳一周訂單信息分析3.案例實施【參考代碼】importmatplotlib.pyplotaspltimportpandasaspddf=pd.read_excel('餐廳訂單信息.xlsx')plt.rcParams['font.sans-serif']='SimHei'#繪制一周菜品點單數(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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論