1. 程式人生 > >Pandas系列(十二)-可視化詳解

Pandas系列(十二)-可視化詳解

需求 繪圖 基礎 frame 線圖 準備 sca matplot 趨勢

目錄

  • 1. 折線圖
  • 2. 柱狀圖
  • 3. 直方圖
  • 4. 箱線圖
  • 5. 區域圖
  • 6. 散點圖
  • 7. 餅圖六邊形容器圖

  數據分析的結果不僅僅只是你來看的,更多的時候是給需求方或者老板來看的,為了更直觀地看出結果,

  數據可視化是必不可少的一個環節。這裏帶大家來看下一些常用的圖形的畫法。

  數據準備

# 導入相關庫
import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import matplotlib
# matplotlib.style.use("ggplot")
%matplotlib inline #總結:%matplotlib inline 可以在Ipython編譯器裏直接使用,功能是可以內嵌繪圖,並且可以省略掉plt.show()這一步。

np.random.seed(100)

Pandas 的數據可視化的實現底層依賴於 matplotlib,所以畫圖時很多基礎知識需要涉及到 matplotlib。
畫圖其實就是跟各種數字打交道,這裏我們先給偽造一些數據。

df = pd.DataFrame(np.random.randint(-10, 10, (10, 3)), index=pd.date_range("1/1/2000", periods=10), columns=list("ABC"))
df = df.cumsum()
df.head()
Out[112]: 
            A   B   C
2000-01-01 -2  -7  -3
2000-01-02  3  -1  -3
2000-01-03 -5  -9 -11
2000-01-04 -1 -17  -4
2000-01-05  5 -12 -10

  1.折線圖

  生成數據之後,我們看下如何進行畫圖。其實非常簡單的,調用 plot 方法就可以看到畫圖的結果了。默認情況下參數 kind="line" 表示圖的類型為折線圖。通過折線圖可以看出數據隨著某個變量的變化趨勢。

df.plot()

技術分享圖片

df.plot(x="A",y="C")

  技術分享圖片

  2. 柱狀圖

  通過柱狀圖可以對比多個值的差別。如果想要畫出柱狀圖,可以將參數 kind 設置為 bar 或者 barh。

df.plot(kind="bar")
plt.show()

技術分享圖片

可以看到,設置 kind="bar" 之後,圖形以索引為 x 軸, 列為 y 軸。

df.plot(kind="barh")
plt.show()

技術分享圖片

可以看到,設置 kind="barh" 之後,圖形以列為 x 軸, 索引為 y 軸。同樣我們也可以自己指定 x 軸和 y 軸。

#自己設定x軸y軸
df.plot(kind="bar",x="A",y=["B","C"])
plt.show()

 技術分享圖片

#此外,如果想要生成堆疊條形圖的haunted,可以設置參數 stacked=True。

df.plot(kind="bar",stacked=True)
plt.show()

 技術分享圖片

  3. 直方圖

  直方圖是一種展示數據頻數/率的特殊的柱狀圖。如果想要畫出直方圖,可以將參數 kind 設置為 hist。可以通過設置參數 bins 來改變 bin 的大小。

df.plot(kind="hist")
plt.show()

技術分享圖片

df.plot(kind="hist",bins=5)
plt.show()

  技術分享圖片

  4.箱線圖

通過箱線圖可以展示出分位數,具體包括上四分位數、下四分位數、中位數以及上下5%的極值。如果想要畫出箱線圖,可以將參數 kind 設置為 box。

df.plot(kind="box")
plt.show()

技術分享圖片

  5.區域圖

  如果想要畫出區域圖,可以將參數 kind 設置為 area。默認情況下,區域圖是堆積的,要生成堆積的區域圖圖,每列必須全部為正值或全為負值。

df.abs().plot(kind="area")
plt.show()

  技術分享圖片

想要生成不堆積的區域圖,設置參數 stacked=False 即可。

df.plot(kind="area", stacked=False)
plt.show()

  技術分享圖片

  6.散點圖

  如果想要畫出散點圖,可以將參數 kind 設置為 scatter,同時需要指定 x 和 y。通過散點圖可以探索變量之間的關系。

df.plot(kind="scatter", x="A", y="B")
plt.show()

 技術分享圖片

可以設置參數 c 作為列的名稱以為每個點提供顏色。

df.plot(kind="scatter", x="A", y="B", c="C")
plt.show()

  技術分享圖片

#如果想要在單個軸上繪制多個列組,需要指定 ax。

ax = df.plot(kind="scatter", x="A", y="B", color="blue")
df.plot(kind="scatter", x="C", y="B", color="green", ax=ax)
plt.show()

  技術分享圖片

7.餅圖

如果想要畫出餅圖,可以將參數 kind 設置為 scatter。

a = df.A[:5]
a.abs().plot.pie(subplots=False,figsize=(4,4))
plt.show()

  技術分享圖片

a.abs().plot.pie(subplots=True,figsize=(4,4))
plt.show()

技術分享圖片

如果想要自動計算出比例,可以設置參數 autopct。

a.abs().plot.pie(subplots=True, figsize=(4, 4), autopct="%.2f")
plt.show()

  技術分享圖片

  8.六邊形容器圖

  在繪制散點圖時,如果數據過於密集,則無法單獨繪制出每個點,這時候可以考慮 Hexbin 圖。
  其中,左邊坐標表示的是值的分布,右邊坐標表示的是數據量大小與顏色的對比。一個有用的關鍵字參數是 gridsize ; 它控制x方向的六邊形數量,並且默認為100.較大的格柵意味著更多的較小的分區。

df = pd.DataFrame(np.random.randn(1000, 2), columns=["A", "B"])
df["B"] = df["B"] + np.arange(1000)
df.plot(kind="hexbin", x="A", y="B", gridsize=10)
plt.show()

  技術分享圖片

df.plot(kind="hexbin", x="A", y="B", gridsize=20)
plt.show()

  技術分享圖片

Pandas系列(十二)-可視化詳解