<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【福利】學會這7個繪圖工具包,Matplotlib可視化也沒那么難

          共 5087字,需瀏覽 11分鐘

           ·

          2021-05-30 08:37

          「數(shù)倉寶貝庫」,帶你學數(shù)據(jù)!文末送兩本

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


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


          Matplotlib提供了豐富的數(shù)據(jù)繪圖工具,主要用于繪制一些統(tǒng)計圖形,例如散點圖、條形圖、折線圖、餅圖、直方圖、箱形圖等。首先我們簡單介紹一下Matplotlib.pyplot模塊的繪圖基礎(chǔ)語法與常用參數(shù),因為后面我們要介紹的各種圖形基本都是基于這個模塊來實現(xiàn)的。pyplot的基礎(chǔ)語法及常用參數(shù)詳見表1。


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



          散點圖


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


          表2 散點圖的主要參數(shù)及其說明


          我們通過matplotlib.pyplot模塊畫一個散點圖,如代碼清單1所示。

          代碼清單1 繪制散點圖import numpy as npimport matplotlib.pyplot as plt x = np.arange(30)y = np.arange(30)+3*np.random.randn(30)plt.scatter(x, y, s=50) plt.show()


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


          圖1 散點圖



          條形圖


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


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


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

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


          圖2 條形圖



          折線圖


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


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


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

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



          圖3 折線圖



          餅圖


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


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


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

          代碼清單4 繪制餅圖import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽

          labels = ['娛樂','育兒','飲食','房貸','交通','其他']sizes = [4,10,18,60,2,6]explode = (0,0,0,0.1,0,0)plt.figure(figsize=(10,7))plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=150)plt.title("餅圖示例-10月份家庭支出")plt.show()



          圖4 餅圖




          直方圖


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


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


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

          代碼清單5 繪制直方圖# 導(dǎo)入第三方包import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport matplotlib.mlab as mlab# 中文和負號的正常顯示plt.rcParams['font.sans-serif'] = [u'SimHei']plt.rcParams['axes.unicode_minus'] = False# 讀取Titanic數(shù)據(jù)集titanic = pd.read_csv('train.csv')# 檢查年齡是否有缺失any(titanic.Age.isnull())# 刪除含有缺失年齡的樣本titanic.dropna(subset=['Age'], inplace=True)# 設(shè)置圖形的顯示風格plt.style.use('ggplot')# 繪圖plt.hist(titanic.Age,         bins = 20,         color = 'steelblue',         edgecolor = 'k',         label = '直方圖' ) # 去除圖形頂部邊界和右邊界的刻度plt.tick_params(top='off', right='off')# 顯示圖例plt.legend()# 去除網(wǎng)格線plt.grid(False)plt.show()


          圖5 直方圖



          箱形圖


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


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


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

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


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


          圖6 垂直箱形圖


          圖7 水平箱形圖



          組合圖


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


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


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

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


          圖8 組合圖


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

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


          圖9  組合圖


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


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


          后臺回復(fù) 22 送兩本,周日20點開獎哦



          瀏覽 16
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧洲三级片视频 | 日韩特级片 | 加勒比无视频网站 | 99成人视频免费观看 | 《精品 模特私拍秘 泄密》学院派 |