目錄python
數據分析的結果不單單只是你來看的,更多的時候是給需求方或者老闆來看的,爲了更直觀地看出結果,dom
數據可視化是必不可少的一個環節。這裏帶你們來看下一些經常使用的圖形的畫法。spa
# 導入相關庫 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。
畫圖其實就是跟各類數字打交道,這裏咱們先給僞造一些數據。3d
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
生成數據以後,咱們看下如何進行畫圖。其實很是簡單的,調用 plot 方法就能夠看到畫圖的結果了。默認狀況下參數 kind="line" 表示圖的類型爲折線圖。經過折線圖能夠看出數據隨着某個變量的變化趨勢。blog
df.plot()
df.plot(x="A",y="C")
經過柱狀圖能夠對比多個值的差異。若是想要畫出柱狀圖,能夠將參數 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。pandas
df.plot(kind="bar",stacked=True) plt.show()
直方圖是一種展現數據頻數/率的特殊的柱狀圖。若是想要畫出直方圖,能夠將參數 kind 設置爲 hist。能夠經過設置參數 bins 來改變 bin 的大小。io
df.plot(kind="hist") plt.show()
df.plot(kind="hist",bins=5) plt.show()
經過箱線圖能夠展現出分位數,具體包括上四分位數、下四分位數、中位數以及上下5%的極值。若是想要畫出箱線圖,能夠將參數 kind 設置爲 box。
df.plot(kind="box") plt.show()
若是想要畫出區域圖,能夠將參數 kind 設置爲 area。默認狀況下,區域圖是堆積的,要生成堆積的區域圖圖,每列必須所有爲正值或全爲負值。
df.abs().plot(kind="area") plt.show()
想要生成不堆積的區域圖,設置參數 stacked=False 便可。
df.plot(kind="area", stacked=False) plt.show()
若是想要畫出散點圖,能夠將參數 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()
若是想要畫出餅圖,能夠將參數 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()
在繪製散點圖時,若是數據過於密集,則沒法單獨繪製出每一個點,這時候能夠考慮 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()