簡介
python中matplotlib是非常重要并且友善的圖形化工具,使用matplotlib可以可視化的進行資料分析,今天本文将會詳細講解pandas中的matplotlib應用。
基礎畫圖
要想使用matplotlib,我們需要引用它:
假如我們要從2020年1月1日開始,随機生成365天的資料,然後作圖表示應該這樣寫:

使用df可以同時畫多個series的圖像:
可以指定行和列使用的資料:
其他圖像
plot() 支援很多圖像類型,包括bar, hist, box, density, area, scatter, hexbin, pie等,下面我們分别舉例子來看下怎麼使用。
多個列的bar:
barh 表示橫向的bar圖:
box可以自定義顔色:
可以轉成橫向的:
除了box,還可以使用dataframe.boxplot來畫box圖:
boxplot可以使用by來進行分組:
現在給df加一列:
使用 series.plot.area() 或者 dataframe.plot.area() 可以畫出area圖。
如果不想疊加,可以指定stacked=false
dataframe.plot.scatter() 可以建立點圖。
scatter圖還可以帶第三個軸:
可以将第三個參數變為散點的大小:
使用 dataframe.plot.hexbin() 可以建立蜂窩圖:
預設情況下顔色深度表示的是(x,y)中元素的個數,可以通過reduce_c_function來指定不同的聚合方法:比如 <code>mean</code>, <code>max</code>, <code>sum</code>, <code>std</code>.
使用 dataframe.plot.pie() 或者 series.plot.pie()來建構餅圖:
可以按照列的個數分别作圖:
更多定制化的内容:
如果傳入的value值加起來不是1,那麼會畫出一個傘形:
在畫圖中處理nan資料
下面是預設畫圖方式中處理nan資料的方式:
畫圖方式
處理nan的方式
line
leave gaps at nans
line (stacked)
fill 0’s
bar
scatter
drop nans
histogram
drop nans (column-wise)
box
area
kde
hexbin
pie
其他作圖工具
可以使用pandas.plotting中的scatter_matrix來畫散點矩陣圖:
使用 series.plot.kde() 和 dataframe.plot.kde() 可以畫出密度圖:
安德魯斯曲線允許将多中繼資料繪制為大量曲線,這些曲線是使用樣本的屬性作為傅裡葉級數的系數建立的. 通過為每個類對這些曲線進行不同的着色,可以可視化資料聚類。 屬于同一類别的樣本的曲線通常會更靠近在一起并形成較大的結構。
平行坐标是一種用于繪制多中繼資料的繪制技術。 平行坐标允許人們檢視資料中的聚類,并直覺地估計其他統計資訊。 使用平行坐标點表示為連接配接的線段。 每條垂直線代表一個屬性。 一組連接配接的線段代表一個資料點。 趨于聚集的點将顯得更靠近。
滞後圖是用時間序列和相應的滞後階數序列做出的散點圖。可以用于觀測自相關性。
自相關圖通常用于檢查時間序列中的随機性。 自相關圖是一個平面二維坐标懸垂線圖。橫坐标表示延遲階數,縱坐标表示自相關系數。
bootstrap plot用于直覺地評估統計資料的不确定性,例如均值,中位數,中間範圍等。從資料集中選擇指定大小的随機子集,為該子集計算出相關統計資訊, 重複指定的次數。 生成的圖和直方圖構成了引導圖。
他是基于彈簧張力最小化算法。它把資料集的特征映射成二維目标空間機關圓中的一個點,點的位置由系在點上的特征決定。把執行個體投入圓的中心,特征會朝圓中此執行個體位置(執行個體對應的歸一化數值)“拉”執行個體。
圖像的格式
matplotlib 1.5版本之後,提供了很多預設的畫圖設定,可以通過matplotlib.style.use(my_plot_style)來進行設定。
可以通過使用matplotlib.style.available來列出所有可用的style類型:
預設情況下畫出來的圖會有一個表示列類型的圖示,可以使用legend=false禁用:
畫圖中如果x軸或者y軸的資料差異過大,可能會導緻圖像展示不友好,數值小的部分基本上無法展示,可以傳入logy=true進行y軸的縮放:
使用secondary_y=true 可以繪制多個y軸資料:
小圖示上面預設會添加right字樣,想要去掉的話可以設定mark_right=false:
使用時間做坐标的時候,因為時間太長,導緻x軸的坐标值顯示不完整,可以使用x_compat=true 來進行調整:
如果有多個圖像需要調整,可以使用with:
繪制df的時候,可以将多個series分開作為子圖顯示:
可以修改子圖的layout:
上面等價于:
一個更複雜的例子:
如果設定table=true , 可以直接将表格資料一并顯示在圖中:
table還可以顯示在圖檔上面:
如果y軸的資料太多的話,使用預設的線的顔色可能不好分辨。這種情況下可以傳入colormap 。
本文已收錄于 http://www.flydean.com/09-python-pandas-plot/ 最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現!