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

matplotlib API入門python

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

一、Figure和Subplotdom

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中的繪圖函數佈局

一、線型圖spa

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

>>> 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中爲各列繪製一條直線,並自動建立圖例:code

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

二、柱狀圖對象

在生成的線型圖的代碼中加上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'))

三、直方圖和密度圖

 直方圖是一種能夠對值頻率進行離散化顯示的柱狀圖,另外一種是密度圖,它是經過計算可能會產生觀測數據的連續機率分佈的估計而產生的。通常過程是將該分佈近似爲一組核分佈,所以,密度圖也被稱做KDE圖,調用plt時加上kind='kde'便可生成一張密度圖。

四、散佈圖

散佈圖是觀察兩個一維數據序列之間的關係的有效手段,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++圖形庫的圖形工具包

相關文章
相關標籤/搜索