Python數(shù)據(jù)分析:手把手教你用Pandas生成可視化圖表的教程
大家都知道,Matplotlib 是眾多 Python 可視化包的鼻祖,也是Python最常用的標(biāo)準(zhǔn)可視化庫(kù),其功能非常強(qiáng)大,同時(shí)也非常復(fù)雜,想要搞明白并非易事。但自從Python進(jìn)入3.0時(shí)代以后,pandas的使用變得更加普及,它的身影經(jīng)常見(jiàn)于市場(chǎng)分析、爬蟲(chóng)、金融分析以及科學(xué)計(jì)算中。
作為數(shù)據(jù)分析工具的集大成者,pandas作者曾說(shuō),pandas中的可視化功能比plt更加簡(jiǎn)便和功能強(qiáng)大。實(shí)際上,如果是對(duì)圖表細(xì)節(jié)有極高要求,那么建議大家使用matplotlib通過(guò)底層圖表模塊進(jìn)行編碼。當(dāng)然,我們大部分人在工作中是不會(huì)有這樣變態(tài)的要求的,所以一句import pandas as pd就足夠應(yīng)付全部的可視化工作了。
下面,我們總結(jié)一下PD庫(kù)的一些使用方法和入門技巧。
一、線型圖
對(duì)于pandas的內(nèi)置數(shù)據(jù)類型,Series 和 DataFrame 都有一個(gè)用于生成各類 圖表 的 plot 方法。 默認(rèn)情況下, 它們所生成的是線型圖。其實(shí)Series和DataFrame上的這個(gè)功能只是使用matplotlib庫(kù)的plot()方法的簡(jiǎn)單包裝實(shí)現(xiàn)。參考以下示例代碼 -
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('2018/12/18', periods=10), columns=list('ABCD')) df.plot()
執(zhí)行上面示例代碼,得到以下結(jié)果 -
如果索引由日期組成,則調(diào)用gct().autofmt_xdate()來(lái)格式化x軸,如上圖所示。
我們可以使用x和y關(guān)鍵字繪制一列與另一列。
s = Series( np. random. randn( 10). cumsum(), index= np. arange( 0, 100, 10)) s. plot()
pandas 的大部分繪圖方法都有 一個(gè) 可選的ax參數(shù), 它可以是一個(gè) matplotlib 的 subplot 對(duì)象。 這使你能夠在網(wǎng)格 布局 中 更為靈活地處理 subplot 的位置。 DataFrame的plot 方法會(huì)在 一個(gè) subplot 中為各列繪制 一條 線, 并自動(dòng)創(chuàng)建圖例( 如圖所示):
df = DataFrame( np. random. randn( 10, 4). cumsum( 0), ...: columns=[' A', 'B', 'C', 'D'], index= np. arange( 0, 100, 10)) df. plot()
二、柱狀圖
在生成線型圖的代碼中加上 kind=' bar'( 垂直柱狀圖) 或 kind=' barh'( 水平柱狀圖) 即可生成柱狀圖。 這時(shí),Series 和 DataFrame 的索引將會(huì)被用 作 X( bar) 或 (barh)刻度:
In [59]: fig, axes = plt. subplots( 2, 1) In [60]: data = Series( np. random. rand( 16), index= list(' abcdefghijklmnop')) In [61]: data. plot( kind=' bar', ax= axes[ 0], color=' k', alpha= 0. 7) Out[ 61]: < matplotlib. axes. AxesSubplot at 0x4ee7750> In [62]: data. plot( kind=' barh', ax= axes[ 1], color=' k', alpha= 0.
對(duì)于 DataFrame, 柱狀 圖 會(huì) 將 每一 行的 值 分為 一組, 如圖 8- 16 所示:
In [63]: df = DataFrame( np. random. rand( 6, 4), ...: index=[' one', 'two', 'three', 'four', 'five', 'six'], ...: columns= pd. Index([' A', 'B', 'C', 'D'], name=' Genus')) In [64]: df Out[ 64]: Genus A B C D one 0. 301686 0. 156333 0. 371943 0. 270731 two 0. 750589 0. 525587 0. 689429 0. 358974 three 0. 381504 0. 667707 0. 473772 0. 632528 four 0. 942408 0. 180186 0. 708284 0. 641783 five 0. 840278 0. 909589 0. 010041 0. 653207 six 0. 062854 0. 589813 0. 811318 0. 060217 In [65]: df. plot( kind=' bar')
三、條形圖
現(xiàn)在通過(guò)創(chuàng)建一個(gè)條形圖來(lái)看看條形圖是什么。條形圖可以通過(guò)以下方式來(lái)創(chuàng)建 -
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d']) df.plot.bar()
執(zhí)行上面示例代碼,得到以下結(jié)果 -
要生成一個(gè)堆積條形圖,通過(guò)指定:pass stacked=True -
import pandas as pd df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d']) df.plot.bar(stacked=True)
執(zhí)行上面示例代碼,得到以下結(jié)果 -
要獲得水平條形圖,使用barh()方法 -
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d']) df.plot.barh(stacked=True)
四、直方圖
可以使用plot.hist()方法繪制直方圖。我們可以指定bins的數(shù)量值。
import pandas as pd import numpy as np df = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c']) df.plot.hist(bins=20)
執(zhí)行上面示例代碼,得到以下結(jié)果 -
要為每列繪制不同的直方圖,請(qǐng)使用以下代碼 -
import pandas as pd import numpy as np df=pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c']) df.hist(bins=20)
執(zhí)行上面示例代碼,得到以下結(jié)果 -
五、箱型圖
Boxplot可以繪制調(diào)用Series.box.plot()和DataFrame.box.plot()或DataFrame.boxplot()來(lái)可視化每列中值的分布。
例如,這里是一個(gè)箱形圖,表示對(duì)[0,1)上的統(tǒng)一隨機(jī)變量的10次觀察的五次試驗(yàn)。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E']) df.plot.box()
執(zhí)行上面示例代碼,得到以下結(jié)果 -
六、塊型圖
可以使用Series.plot.area()或DataFrame.plot.area()方法創(chuàng)建區(qū)域圖形。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) df.plot.area()
執(zhí)行上面示例代碼,得到以下結(jié)果 -
七、散點(diǎn)圖
可以使用DataFrame.plot.scatter()方法創(chuàng)建散點(diǎn)圖。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd']) df.plot.scatter(x='a', y='b')
執(zhí)行上面示例代碼,得到以下結(jié)果 -
八、餅狀圖
餅狀圖可以使用DataFrame.plot.pie()方法創(chuàng)建。
import pandas as pd import numpy as np df = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x']) df.plot.pie(subplots=True)
執(zhí)行上面示例代碼,得到以下結(jié)果 -
以上這篇Python數(shù)據(jù)分析:手把手教你用Pandas生成可視化圖表的教程就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python統(tǒng)計(jì)函數(shù)庫(kù)scipy.stats的用法解析
今天小編就為大家分享一篇python統(tǒng)計(jì)函數(shù)庫(kù)scipy.stats的用法解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02python sitk.show()與imageJ結(jié)合使用常見(jiàn)的問(wèn)題
這篇文章主要介紹了python sitk.show()與imageJ結(jié)合使用常見(jiàn)的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04Python?sklearn預(yù)測(cè)評(píng)估指標(biāo)混淆矩陣計(jì)算示例詳解
這篇文章主要為大家介紹了Python?sklearn預(yù)測(cè)評(píng)估指標(biāo)混淆矩陣計(jì)算示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Python實(shí)現(xiàn)PDF轉(zhuǎn)MP3的示例代碼
我們平??吹胶芏辔募际荘DF格式,網(wǎng)上的各類書(shū)籍多為此格式。有時(shí)候不方便閱讀,或者怕費(fèi)眼睛傷頸椎,那么有沒(méi)有一種方法可以把它變?yōu)橐纛l,本文就來(lái)和大家詳細(xì)講講2023-05-05