天天看點

Pandas進階教程之:plot畫圖詳解

簡介

python中matplotlib是非常重要并且友善的圖形化工具,使用matplotlib可以可視化的進行資料分析,今天本文将會詳細講解pandas中的matplotlib應用。

基礎畫圖

要想使用matplotlib,我們需要引用它:

假如我們要從2020年1月1日開始,随機生成365天的資料,然後作圖表示應該這樣寫:

Pandas進階教程之:plot畫圖詳解

使用df可以同時畫多個series的圖像:

Pandas進階教程之:plot畫圖詳解

可以指定行和列使用的資料:

Pandas進階教程之:plot畫圖詳解

其他圖像

plot() 支援很多圖像類型,包括bar, hist, box, density, area, scatter, hexbin, pie等,下面我們分别舉例子來看下怎麼使用。

Pandas進階教程之:plot畫圖詳解

多個列的bar:

Pandas進階教程之:plot畫圖詳解
Pandas進階教程之:plot畫圖詳解

barh 表示橫向的bar圖:

Pandas進階教程之:plot畫圖詳解
Pandas進階教程之:plot畫圖詳解
Pandas進階教程之:plot畫圖詳解

box可以自定義顔色:

Pandas進階教程之:plot畫圖詳解

可以轉成橫向的:

Pandas進階教程之:plot畫圖詳解

除了box,還可以使用dataframe.boxplot來畫box圖:

Pandas進階教程之:plot畫圖詳解

boxplot可以使用by來進行分組:

Pandas進階教程之:plot畫圖詳解

現在給df加一列:

Pandas進階教程之:plot畫圖詳解

使用 series.plot.area() 或者 dataframe.plot.area() 可以畫出area圖。

Pandas進階教程之:plot畫圖詳解

如果不想疊加,可以指定stacked=false

Pandas進階教程之:plot畫圖詳解

dataframe.plot.scatter() 可以建立點圖。

Pandas進階教程之:plot畫圖詳解

scatter圖還可以帶第三個軸:

Pandas進階教程之:plot畫圖詳解

可以将第三個參數變為散點的大小:

Pandas進階教程之:plot畫圖詳解

使用 dataframe.plot.hexbin() 可以建立蜂窩圖:

Pandas進階教程之:plot畫圖詳解

預設情況下顔色深度表示的是(x,y)中元素的個數,可以通過reduce_c_function來指定不同的聚合方法:比如 <code>mean</code>, <code>max</code>, <code>sum</code>, <code>std</code>.

Pandas進階教程之:plot畫圖詳解

使用 dataframe.plot.pie() 或者 series.plot.pie()來建構餅圖:

Pandas進階教程之:plot畫圖詳解

可以按照列的個數分别作圖:

Pandas進階教程之:plot畫圖詳解

更多定制化的内容:

Pandas進階教程之:plot畫圖詳解

如果傳入的value值加起來不是1,那麼會畫出一個傘形:

Pandas進階教程之:plot畫圖詳解

在畫圖中處理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來畫散點矩陣圖:

Pandas進階教程之:plot畫圖詳解

使用 series.plot.kde() 和 dataframe.plot.kde() 可以畫出密度圖:

Pandas進階教程之:plot畫圖詳解

安德魯斯曲線允許将多中繼資料繪制為大量曲線,這些曲線是使用樣本的屬性作為傅裡葉級數的系數建立的. 通過為每個類對這些曲線進行不同的着色,可以可視化資料聚類。 屬于同一類别的樣本的曲線通常會更靠近在一起并形成較大的結構。

Pandas進階教程之:plot畫圖詳解

平行坐标是一種用于繪制多中繼資料的繪制技術。 平行坐标允許人們檢視資料中的聚類,并直覺地估計其他統計資訊。 使用平行坐标點表示為連接配接的線段。 每條垂直線代表一個屬性。 一組連接配接的線段代表一個資料點。 趨于聚集的點将顯得更靠近。

Pandas進階教程之:plot畫圖詳解

滞後圖是用時間序列和相應的滞後階數序列做出的散點圖。可以用于觀測自相關性。

Pandas進階教程之:plot畫圖詳解

自相關圖通常用于檢查時間序列中的随機性。 自相關圖是一個平面二維坐标懸垂線圖。橫坐标表示延遲階數,縱坐标表示自相關系數。

Pandas進階教程之:plot畫圖詳解

bootstrap plot用于直覺地評估統計資料的不确定性,例如均值,中位數,中間範圍等。從資料集中選擇指定大小的随機子集,為該子集計算出相關統計資訊, 重複指定的次數。 生成的圖和直方圖構成了引導圖。

Pandas進階教程之:plot畫圖詳解

他是基于彈簧張力最小化算法。它把資料集的特征映射成二維目标空間機關圓中的一個點,點的位置由系在點上的特征決定。把執行個體投入圓的中心,特征會朝圓中此執行個體位置(執行個體對應的歸一化數值)“拉”執行個體。

Pandas進階教程之:plot畫圖詳解

圖像的格式

matplotlib 1.5版本之後,提供了很多預設的畫圖設定,可以通過matplotlib.style.use(my_plot_style)來進行設定。

可以通過使用matplotlib.style.available來列出所有可用的style類型:

預設情況下畫出來的圖會有一個表示列類型的圖示,可以使用legend=false禁用:

Pandas進階教程之:plot畫圖詳解
Pandas進階教程之:plot畫圖詳解

畫圖中如果x軸或者y軸的資料差異過大,可能會導緻圖像展示不友好,數值小的部分基本上無法展示,可以傳入logy=true進行y軸的縮放:

Pandas進階教程之:plot畫圖詳解

使用secondary_y=true 可以繪制多個y軸資料:

Pandas進階教程之:plot畫圖詳解

小圖示上面預設會添加right字樣,想要去掉的話可以設定mark_right=false:

使用時間做坐标的時候,因為時間太長,導緻x軸的坐标值顯示不完整,可以使用x_compat=true 來進行調整:

Pandas進階教程之:plot畫圖詳解

如果有多個圖像需要調整,可以使用with:

Pandas進階教程之:plot畫圖詳解

繪制df的時候,可以将多個series分開作為子圖顯示:

Pandas進階教程之:plot畫圖詳解

可以修改子圖的layout:

Pandas進階教程之:plot畫圖詳解

上面等價于:

一個更複雜的例子:

Pandas進階教程之:plot畫圖詳解

如果設定table=true , 可以直接将表格資料一并顯示在圖中:

Pandas進階教程之:plot畫圖詳解

table還可以顯示在圖檔上面:

Pandas進階教程之:plot畫圖詳解

如果y軸的資料太多的話,使用預設的線的顔色可能不好分辨。這種情況下可以傳入colormap 。

Pandas進階教程之:plot畫圖詳解
本文已收錄于 http://www.flydean.com/09-python-pandas-plot/ 最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現!