自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

學(xué)會(huì)這7個(gè)繪圖工具包,Matplotlib可視化也沒(méi)那么難

大數(shù)據(jù) 數(shù)據(jù)分析
繪圖是數(shù)據(jù)分析工作中的重要一環(huán),是探索過(guò)程的一部分。Matplotlib是當(dāng)前用于數(shù)據(jù)可視化的最流行的Python包之一,本文主要介紹數(shù)據(jù)可視化分析工具:Matplotlib。

 [[403359]]

本文轉(zhuǎn)載自微信公眾號(hào)「數(shù)倉(cāng)寶貝庫(kù)」,作者楊游云、周健。轉(zhuǎn)載本文請(qǐng)聯(lián)系數(shù)倉(cāng)寶貝庫(kù)公眾號(hào)。

繪圖是數(shù)據(jù)分析工作中的重要一環(huán),是探索過(guò)程的一部分。Matplotlib是當(dāng)前用于數(shù)據(jù)可視化的最流行的Python包之一,本文主要介紹數(shù)據(jù)可視化分析工具:Matplotlib。

Matplotlib是一個(gè)跨平臺(tái)庫(kù),是根據(jù)數(shù)組中的數(shù)據(jù)制作2D圖的可視化分析工具。Matplotlib提供了一個(gè)面向?qū)ο蟮腁PI,有助于使用Python GUI工具包(如PyQt、WxPythonotTkinter)在應(yīng)用程序中嵌入繪圖。它也可以用于Python、IPython shell、Jupyter筆記本和Web應(yīng)用程序服務(wù)器中。

Matplotlib提供了豐富的數(shù)據(jù)繪圖工具,主要用于繪制一些統(tǒng)計(jì)圖形,例如散點(diǎn)圖、條形圖、折線圖、餅圖、直方圖、箱形圖等。首先我們簡(jiǎn)單介紹一下Matplotlib.pyplot模塊的繪圖基礎(chǔ)語(yǔ)法與常用參數(shù),因?yàn)楹竺嫖覀円榻B的各種圖形基本都是基于這個(gè)模塊來(lái)實(shí)現(xiàn)的。pyplot的基礎(chǔ)語(yǔ)法及常用參數(shù)詳見表1。

表1 pyplot的基礎(chǔ)語(yǔ)法及常用參數(shù)

散點(diǎn)圖

散點(diǎn)圖通常用在回歸分析中,描述數(shù)據(jù)點(diǎn)在直角坐標(biāo)系平面上的分布。散點(diǎn)圖表示因變量隨自變量而變化的大致趨勢(shì),據(jù)此可以選擇合適的函數(shù)對(duì)數(shù)據(jù)點(diǎn)進(jìn)行擬合。在廣告數(shù)據(jù)分析中,我們通常會(huì)根據(jù)散點(diǎn)圖來(lái)分析兩個(gè)變量之間的數(shù)據(jù)分布關(guān)系。散點(diǎn)圖的主要參數(shù)及其說(shuō)明如表2所示。

表2 散點(diǎn)圖的主要參數(shù)及其說(shuō)明

我們通過(guò)matplotlib.pyplot模塊畫一個(gè)散點(diǎn)圖,如代碼清單1所示。

  1. 代碼清單1 繪制散點(diǎn)圖 
  2. import numpy as np 
  3. import matplotlib.pyplot as plt  
  4. x = np.arange(30) 
  5. y = np.arange(30)+3*np.random.randn(30) 
  6. plt.scatter(x, y, s=50)  
  7. plt.show() 

其可視化結(jié)果如下圖所示。

圖1 散點(diǎn)圖

條形圖

條形圖是用寬度相同的條形的高度或長(zhǎng)度來(lái)表示數(shù)據(jù)多少的圖形。條形圖可以橫置或縱置,縱置時(shí)也稱為柱狀圖。此外,條形圖有簡(jiǎn)單條形圖、復(fù)式條形圖等形式。條形圖的主要參數(shù)及各參數(shù)說(shuō)明如表3所示。

表3 條形圖的主要參數(shù)及各參數(shù)說(shuō)明

假設(shè)我們拿到了2017年內(nèi)地電影票房前10的電影的片名和票房數(shù)據(jù),如果想直觀比較各電影票房數(shù)據(jù)大小,那么條形圖顯然是最合適的呈現(xiàn)方式,如代碼清單2所示,其可視化結(jié)果如圖2所示。

  1. 代碼清單2 繪制條形圖 
  2. a = ['戰(zhàn)狼2''速度與激情8''功夫瑜伽''西游伏妖篇''變形金剛5:最后的騎士''摔跤吧!爸爸''加勒比海盜5:死無(wú)對(duì)證','金剛:骷髏島''極限特工:終極回歸''生化危機(jī)6:終章'
  3. # 單位:億 
  4. b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12] 
  5. # 用來(lái)正常顯示中文標(biāo)簽 
  6. plt.rcParams['font.sans-serif']=['SimHei','Times New Roman']  
  7. plt.rcParams['axes.unicode_minus']=False 
  8. # bar要求傳遞兩個(gè)數(shù)字,可以單獨(dú)設(shè)置x軸的顯示 
  9. plt.bar(range(len(a)), b, width=0.3)   
  10. plt.xticks(range(len(a)), a, rotation=90)  #字體傾斜角度 
  11. plt.grid(False
  12. plt.show() 

圖2 條形圖

折線圖

折線圖是用直線連接排列在工作表的列或行中的數(shù)據(jù)點(diǎn)而繪制成的圖形。折線圖可以顯示隨時(shí)間(根據(jù)常用比例設(shè)置)而變化的連續(xù)數(shù)據(jù),因此非常適用于顯示相等時(shí)間間隔下數(shù)據(jù)的趨勢(shì)。折線圖的主要參數(shù)及各參數(shù)說(shuō)明如表4所示。

表4 折線圖的主要參數(shù)及各參數(shù)說(shuō)明

以某廣告平臺(tái)隨日期變化的用戶請(qǐng)求數(shù)為例,我們用折線圖來(lái)表現(xiàn)其變化趨勢(shì),如代碼清單3所示,其可視化結(jié)果如圖3所示。

  1. 代碼清單3 繪制折線圖 
  2. import matplotlib.dates as mdate 
  3. dateparse = lambda dates:pd.datetime.strptime(dates,'%Y%m%d'
  4. data = pd.read_csv('req_user.csv',encoding='utf-8',parse_dates=['date'],date_parser=dateparse) 
  5. plt.figure(figsize=(10,7)) 
  6. plt.plot(data["date"],data['req_user'])  
  7. plt.xlabel('date',fontsize=15) 
  8. plt.ylabel('req_user',fontsize=15)  #圖例字體大小 
  9. plt.tick_params(labelsize=10)  #刻度字體大小 
  10. plt.show() 

圖3 折線圖

餅圖

餅圖常用于統(tǒng)計(jì)學(xué)模塊中。用于顯示一個(gè)數(shù)據(jù)系列中各項(xiàng)的大小與各項(xiàng)總和的比例。餅圖中的數(shù)據(jù)點(diǎn)顯示為整個(gè)餅圖的百分比,餅圖的主要參數(shù)及其說(shuō)明如表5所示。

表5 餅圖的主要參數(shù)及其說(shuō)明

以某家庭10月份家庭支出情況為例,我們用餅圖來(lái)體現(xiàn)各部分支出占家庭整體支出的情況,如代碼清單4所示,其可視化結(jié)果如圖4所示。

  1. 代碼清單4 繪制餅圖 
  2. import matplotlib.pyplot as plt 
  3. plt.rcParams['font.sans-serif']=['SimHei'] #用來(lái)正常顯示中文標(biāo)簽 
  4.  
  5.  
  6. labels = ['娛樂(lè)','育兒','飲食','房貸','交通','其他'
  7. sizes = [4,10,18,60,2,6] 
  8. explode = (0,0,0,0.1,0,0) 
  9. plt.figure(figsize=(10,7)) 
  10. plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=150) 
  11. plt.title("餅圖示例-10月份家庭支出"
  12. plt.show() 

圖4 餅圖

直方圖

直方圖,又稱質(zhì)量分布圖,是一種統(tǒng)計(jì)報(bào)告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。一般用橫軸表示數(shù)據(jù)類型,用縱軸表示分布情況。直方圖是數(shù)值數(shù)據(jù)分布的精確圖形表示,是對(duì)連續(xù)變量(定量變量)的概率分布的估計(jì),由卡爾·皮爾遜(Karl Pearson)首先引入,是一種特殊的條形圖。在構(gòu)建直方圖時(shí),第一步是將值的范圍分段,即將整個(gè)值的范圍分成一系列間隔,然后計(jì)算每個(gè)間隔中有多少值。這些值通常被指定為連續(xù)的、不重疊的變量間隔,間隔必須相鄰,并且通常是相等的大小。直方圖的主要參數(shù)及說(shuō)明如表6所示。

表6 直方圖的主要參數(shù)及說(shuō)明

下面我們以Kaggle經(jīng)典比賽案例泰坦尼克號(hào)數(shù)據(jù)集為例,繪制乘客年齡的頻數(shù)直方圖,查看各年齡段乘客的年齡分布情況,如代碼清單5所示,其可視化結(jié)果如圖5所示。

  1. 代碼清單5 繪制直方圖 
  2. # 導(dǎo)入第三方包 
  3. import numpy as np 
  4. import pandas as pd 
  5. import matplotlib.pyplot as plt 
  6. import matplotlib.mlab as mlab 
  7. # 中文和負(fù)號(hào)的正常顯示 
  8. plt.rcParams['font.sans-serif'] = [u'SimHei'
  9. plt.rcParams['axes.unicode_minus'] = False 
  10. # 讀取Titanic數(shù)據(jù)集 
  11. titanic = pd.read_csv('train.csv'
  12. # 檢查年齡是否有缺失 
  13. any(titanic.Age.isnull()) 
  14. # 刪除含有缺失年齡的樣本 
  15. titanic.dropna(subset=['Age'], inplace=True
  16. # 設(shè)置圖形的顯示風(fēng)格 
  17. plt.style.use('ggplot'
  18. # 繪圖 
  19. plt.hist(titanic.Age,  
  20.         bins = 20,  
  21.         color = 'steelblue',  
  22.         edgecolor = 'k',  
  23.         label = '直方圖' )  
  24. # 去除圖形頂部邊界和右邊界的刻度 
  25. plt.tick_params(top='off'right='off'
  26. # 顯示圖例 
  27. plt.legend() 
  28. # 去除網(wǎng)格線 
  29. plt.grid(False
  30. plt.show() 

圖5 直方圖

箱形圖

箱形圖又稱為盒須圖、盒式圖或箱線圖,是一種用于顯示一組數(shù)據(jù)分散情況的統(tǒng)計(jì)圖,因形狀如箱子而得名。它主要用于反映原始數(shù)據(jù)分布的特征,也可以進(jìn)行多組數(shù)據(jù)分布特征的比較。箱形圖的主要參數(shù)及說(shuō)明如表7所示。

表7 箱形圖的主要參數(shù)及說(shuō)明

下面繪制箱形圖,如代碼清單6所示。

  1. 代碼清單6 繪制箱形圖 
  2. import numpy as np 
  3. import pandas as pd 
  4. import matplotlib.pyplot as plt 
  5.   
  6. df = pd.DataFrame(np.random.rand(10,5),columns=['a','b','c','d','e']) 
  7. # 繪圖 
  8. plt.boxplot(df,patch_artist=True)  #默認(rèn)垂直擺放箱體 
  9. plt.show() 

垂直箱形圖與水平箱形圖分別如圖6、圖7所示。

圖6 垂直箱形圖

圖7 水平箱形圖

組合圖

前面介紹的都是在figure對(duì)象中創(chuàng)建單獨(dú)的圖像,有時(shí)候我們需要在同一個(gè)畫布中創(chuàng)建多個(gè)子圖或者組合圖,此時(shí)可以用add_subplot創(chuàng)建一個(gè)或多個(gè)subplot來(lái)創(chuàng)建組合圖,或者通過(guò)subplot使用循環(huán)語(yǔ)句來(lái)創(chuàng)建多個(gè)子圖。pyplot.subplots的常用參數(shù)及說(shuō)明如表8所示。

表8 pyplot.subplots的常用參數(shù)

使用add_subplot創(chuàng)建組合圖,如代碼清單7所示,其可視化結(jié)果如圖8所示。

  1. 代碼清單7 繪制組合圖 
  2. from numpy.random import randn 
  3. import matplotlib.pyplot as plt 
  4. #在同一個(gè)figure中創(chuàng)建一組2行2列的subplot 
  5. fig = plt.figure() 
  6. ax1 = fig.add_subplot(2,2,1)  #表示4個(gè)subplot中的第一個(gè) 
  7. ax2 = fig.add_subplot(2,2,2)  #表示4個(gè)subplot中的第二個(gè) 
  8. ax3 = fig.add_subplot(2,2,3)  #表示4個(gè)subplot中的第三個(gè) 
  9. ax4 = fig.add_subplot(2,2,4)  #表示4個(gè)subplot中的第四個(gè) 
  10. ax1.scatter(np.arange(30),np.arange(30)+3*randn(30)) 
  11. ax2.bar(np.arange(8),[1,2,3,7,8,5,6,4]) 
  12. ax3.hist(randn(100),bins=20) 
  13. ax4.plot(randn(60).cumsum())  
  14. plt.show() 

圖8 組合圖

通過(guò)subplot使用循環(huán)語(yǔ)句來(lái)創(chuàng)建組合圖,如代碼清單8所示,其可視化結(jié)果如圖9所示。

  1. 代碼清單8 使用循環(huán)語(yǔ)句繪制組合圖 
  2. fig,axes = plt.subplots(2,2,sharex=True,sharey=True
  3. for i in range(2): 
  4.     for j in range(2): 
  5.         axes[i,j].plot(randn(100).cumsum()) 
  6. plt.subplots_adjust(wspace=0,hspace=0) #用于調(diào)整subplot周圍的間距 
  7. plt.show() 

圖9 組合圖

利用figure的subplot_adjust方法可以輕易地修改間距,其中wspace和hspace分別用于控制寬度和高度的百分比,可以用作subplot之間的間距。

本文摘編于《Python廣告數(shù)據(jù)挖掘與分析實(shí)戰(zhàn)》,經(jīng)出版方授權(quán)發(fā)布。

責(zé)任編輯:武曉燕 來(lái)源: 數(shù)倉(cāng)寶貝庫(kù)
相關(guān)推薦

2020-07-29 08:05:42

JavaScriptTypeScript工具

2024-04-30 10:40:11

2020-09-08 13:45:37

Python工具包代碼

2022-04-02 14:50:22

Python工具包數(shù)據(jù)

2022-08-05 08:56:24

Python可視化工具

2017-07-27 09:49:37

Python工具Matplotlib

2017-07-04 16:00:16

PythonMatplotlib可視化工具

2017-07-18 15:15:57

數(shù)據(jù)可視化細(xì)節(jié)層次分析

2017-07-13 09:21:05

大數(shù)據(jù)數(shù)據(jù)可視化

2024-12-24 12:00:00

Matplotlib可視化分析Python

2019-04-29 08:30:20

Python可視化工具數(shù)據(jù)可視化

2020-12-15 09:43:20

Python可視化工具網(wǎng)絡(luò)應(yīng)用

2012-12-21 09:31:52

Windows 8

2014-11-03 18:22:53

2021-07-01 07:34:09

LinuxIO模型

2022-07-13 15:54:14

Matplotlib圖表

2024-01-03 18:45:35

Pandas繪圖函數(shù)

2009-08-31 13:32:12

2019-05-17 09:33:50

圖像識(shí)別三維重建文本識(shí)別

2023-10-26 18:22:16

前端CSSFlex 布局
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)