pandas中的繪圖函數
- pandas中的繪圖函數實際上是調用的matplotlib
- plot()
- pip install scipy
線形圖
- 反映趨勢
1. series線性圖
s = Series(data=np.random.randint(0,10, size=10))
s
# 默認畫的是線形圖
# 以index作爲x軸數據,以value作爲y軸數據
s.plot()
2. dataframe線性圖
index = ['張三', '李四', '王五', '趙六']
columns = ['語文', '數學', '英語']
data = np.random.randint(0, 150, size=(4, 3))
ddd = DataFrame(index=index, columns=columns, data=data)
ddd
顯示中文
# 顯示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
解決中文情況下負號沒法正常顯示的問題.
plt.rcParams['axes.unicode_minus'] = False
ddd.index = [-2, -1, 0, 1]
# 以index作爲x軸數據,每一列畫一條線.
ddd.plot()
柱狀圖
- 比較大小
Series柱狀圖
參數:kind = ‘bar’/‘barh’
s.plot(kind='bar', color=np.random.rand(10, 3))
橫向
s.plot(kind='barh')
DataFrame柱狀圖
# 每一行的數據放在一起,比較柱子大小.
ddd.plot(kind='bar')
水平柱狀圖
ddd.plot(kind='barh')
直方圖
只需要一維數據, 自動計算頻數.
-
反映的是數據的分佈
-
y軸的數據是數據出現的次數. 我們叫做頻數.
-
kind=‘hist’
s.plot(kind='hist', bins=10)
計算 直方數據
np.histogram(s)
density=True顯示密度估計
s.plot(kind='hist', density=True, bins=20)
np.histogram(s, density=True, bins=20)
kde圖:(看擬合程度)
-
擬合密度估計,用於彌補直方圖由於參數bins設置的不合理導致的精度缺失問題
s.plot(kind='hist', density=True, bins=10) s.plot(kind='kde') # kernel density estimate
練習:繪製一個由兩個不同的正態分佈組成的的雙峯分佈
n1 = np.random.normal(loc=5, scale=5, size=10000)
n2 = np.random.normal(loc=35, scale=10, size=10000)
n = np.hstack((n1, n2))
s = Series(data=n)
s.plot(kind='hist', density=True, bins=200)
s.plot(kind='kde')
散佈圖 (散點圖)
看兩個一維數據組成的一個關係數據
- 觀察兩個一維數據數列之間的關係的有效方法
- DataFrame對象可用
- kind = ‘scatter’
- 標準正態分佈特點:1)均值爲0, 2) -3~3 範圍
創建一個df
df = DataFrame({'A': np.random.randn(1000), 'B': np.random.randn(1000), 'C': np.random.randn(1000), 'D': np.random.randn(1000)})
df.head()
數值特點:均值爲0, 在-3~3區間
散佈圖:
#查看A,B兩列數據組成的一個新的關係數據(相當於俯視圖)
df.plot(x='A', y='B', kind='scatter')
散佈圖矩陣,當有多個點時,兩兩點的關係
- 使用函數:pd.plotting.scatter_matrix()
- 參數diagonal:設置對角線的圖像類型
df中A,B,C,D兩兩組合就是16個
pd.plotting.scatter_matrix(df, alpha=0.5, figsize=(4*4, 4*4), diagonal='kde')