利用python進行數據分析之繪圖和可視化


matplotlib API入門

 使用matplotlib的辦法最常用的方式是pylab的ipython,pylab模式還會向ipython引入一大堆模塊和函數提供一種更接近與matlab的界面,matplotlib API函數位於matplotlib.pyplot模塊中,其通常的引入約定是:import matplot.pyplot as plt

1、Figure和Subplot

matplotlib的圖像都位於Figure對象中,你可以用plt.figure創建一個新的Figure,不能通過空Figure繪圖,必須用add_subplot創建一個或多個sub_plot才行

>>> import matplotlib.pyplot as plt >>> fig=plt.figure() >>> ax1=fig.add_subplot(2,2,1) >>> ax2=fig.add_subplot(2,2,2)

 你可以在matplotlib的文檔中找到各種圖表類型,由於根據特定布局創建Figure和subplot是一件常見的任務,於是便出現一個更為方便的方法:plt.subplots,它可以創建一個新的Figure,且返回一個含有已創建的subplot對象的numpy數組。

pandas中的繪圖函數

1、線型圖

Series和DataFrame都有一個用於生成各類圖標的plot方法,默認情況下,他們所生成的是線型圖,該Series的索引會被傳給matplotlib,並用於繪制x軸

 
>>> from pandas import * >>> import numpy as np >>> import matplotlib.pyplot as plt >>> s=Series(np.random.randn(10).cumsum(),index=np.arange(0,100,10)) >>> s.plot() >>> plt.show(s.plot())
 

DataFrame的plot方法會在一個subplot中為各列繪制一條直線,並自動創建圖例:

>>> df=DataFrame(np.random.randn(10,4).cumsum(0),columns=['A','B','C','D'],index=np.arange(0,100,10)) >>> plt.show(df.plot())

2、柱狀圖

在生成的線型圖的代碼中加上kind='bar'(垂直樹狀圖)或 kind='barch'(水平柱狀圖)即可生成柱狀圖,此時,Series和DataFrame的索引將會被用作X或Y的刻度。

data=Series(np.random.rand(16),index=list('abcdefghijklmnop')) >>> data.plot(kind='bar',ax=axes[0],color='k',alpha=0.7) <matplotlib.axes._subplots.AxesSubplot object at 0x06FA9FD0> >>> data.plot(kind='bar',ax=axes[1],color='k',alpha=0.7) <matplotlib.axes._subplots.AxesSubplot object at 0x049D02D0>

對於DataFrame,柱狀圖會將每一行的值分為一組

 
>>> df=DataFrame(np.random.rand(6,4),index=['one','two','three','four','five','six'],columns=['A','B','C','D']) >>> df.columns.name='Genus' >>> df Genus A B C D one 0.610197 0.132144 0.919492 0.432829 two 0.493323 0.899049 0.438195 0.300159 three 0.305448 0.404252 0.374776 0.924542 four 0.982561 0.233063 0.135196 0.385672 five 0.613274 0.574884 0.684504 0.123448 six 0.791576 0.062249 0.597673 0.058899 >>> plt.show(df.plot(kind='bar'))
 

3、直方圖和密度圖

 直方圖是一種可以對值頻率進行離散化顯示的柱狀圖,另一種是密度圖,它是通過計算可能會產生觀測數據的連續概率分布的估計而產生的。一般過程是將該分布近似為一組核分布,因此,密度圖也被稱作KDE圖,調用plt時加上kind='kde'即可生成一張密度圖。

4、散布圖

散布圖是觀察兩個一維數據序列之間的關系的有效手段,matplotlib的scatter方法是繪制散布圖的主要方法。

 
>>> from pandas import * >>> import numpy as np >>> import matplotlib.pyplot as plt >>> macro=read_csv(r'D:\書籍與代碼資料\利用python進行數據分析代碼和數據集\ch08\macrodata.csv') >>> data=macro[['cpi','m1','tbilrate','unemp']] >>> trans_data=np.log(data).diff().dropna() >>> trans_data[-5:] cpi m1 tbilrate unemp 198 -0.007904 0.045361 -0.396881 0.105361 199 -0.021979 0.066753 -2.277267 0.139762 200 0.002340 0.010286 0.606136 0.160343 201 0.008419 0.037461 -0.200671 0.127339 202 0.008894 0.012202 -0.405465 0.042560 >>> plt.scatter(trans_data['m1'],trans_data['unemp']) <matplotlib.collections.PathCollection object at 0x0525C6D0> >>> plt.show()
 

 在探索式的數據分析中,同時觀察一組變量的散布圖是很有意義的,這也被稱為散布矩陣;pandas提供了一個能從DataFrame創建散布圖矩陣的scatter_matrix函數。

Python圖形化工具生態系統介紹

Chaco:適合用復雜的圖形化方法表達數據的內部關系,對交互支持較多與適合

mayayi:基於C++圖形庫的圖形工具包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM