Pandas繪圖函數超詳細講解

簡介

method 繪圖類別 method 繪圖類別
'line' 折線圖[默認使用] 'area' 堆疊面積圖
'bar' 縱向條形圖 'barh' 橫向條形圖
'kde' 概率分佈圖 'density' 概率分佈圖
'box' 箱線圖 'hist' 數據直方圖
'pie' 餅圖
'scatter' 散點圖 'hexbin' 六角拼接圖

其中scatterhexbin隻適用於數據幀,即DataFrame格式。所謂DataFrame,即數據幀,可以理解為一個表格,如果不考慮表頭的話,這個表格就是多維數組。

對於這些圖像類別,也可以調用專門封裝成的函數進行繪制,例如針對下面這組數據

import matplotlib.pyplot as plt
import pandas as pd
s = pd.Series([1, 2, 2.5, 3, 3.5, 4, 5])

s.plot.kde()完全等價於s.plot(kind='kde')

接下來逐個展示這些圖表

條形圖

pandas中提供橫向和縱向兩種條形圖。

import numpy as np
df = pd.DataFrame(np.random.rand(10,5),
    columns=['a','b','c','d','e'])
df.plot.bar(title="bar")
df.plot.barh(title="barh", stacked=True)
plt.show()

barbarh

折線圖

df.plot.line(title="line")
df.plot.area(title="area")
plt.show()

linearea

箱線圖

箱形圖(Box-plot)又稱為盒須圖、盒式圖或箱線圖,是一種用作顯示一組數據分散情況資料的統計圖。因形狀如箱子而得名。在各種領域也經常被使用,常見於品質管理。它主要用於反映原始數據分佈的特征,還可以進行多組數據分佈特征的比 較。箱線圖的繪制方法是:先找出一組數據的上邊緣、下邊緣、中位數和兩個四分位數;然後, 連接兩個四分位數畫出箱體;再將上邊緣和下邊緣與箱體相連接,中位數在箱體中間。

df.plot.box(title='box')
df.plot.kde(title='kde')
plt.show()

boxkde

直方圖

hist為數據直方圖,多條數據放在一起容易混淆,可以設置透明度alpha。下面對高斯分佈的散點進行繪制,分別繪制其數據直方圖和概率密度圖,可以看出二者之間的關聯性。

rdNormal = np.random.normal
rand = np.random.rand
df = pd.DataFrame({
    i : rdNormal(i,rand(),size=(1000)) for i in range(3)})
df.plot.hist(title='box', bins=30, alpha=0.5)
df.plot.density(title='density')
plt.show()

histdensity

餅圖

餅圖對輸入數據有一定的限制,即不允許出現負值,故在繪制之前,將df所有值取絕對值,且不支持多組數據在一個圖中繪制,故而需要開啟subplot選項

df = pd.DataFrame(np.random.rand(5,3),columns=list('abc'),index=list("ABCDE"))
df.plot.pie(title='pie', subplots=True)
plt.show()

當然,這個subplots選項是任何一種圖像都可以使用的參數。

散點圖和六邊形分箱圖

散點圖是隻有數據幀可以調用的繪圖方法,共有兩類,分別是scatterhexbin,前者是普通的散點圖,後者是六邊形分箱圖,本質上是一種二維的數據直方圖。

rdNormal = np.random.normal
rand = np.random.rand
keys = ['x', 'y', 'c']
datas = {
    keys[i] : rdNormal(i,rand(),size=(1000)) for i in [0,1,2]
}
df = pd.DataFrame(datas)
df.plot.scatter(x='x', y='y', c='c')
df.plot.hexbin(x='x', y='y', gridsize=10)
plt.show()

scatter

hexbin 

到此這篇關於Pandas繪圖函數超詳細講解的文章就介紹到這瞭,更多相關Pandas繪圖函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: