目錄
- 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()