來源:大鄧和他的Python
數據可視化可以讓我們很直觀的發現數據中隱藏的規律,察覺到變量之間的互動關係,可以幫助我們更好的給他人解釋現象,做到一圖勝千文的說明效果。
常見的數據可視化庫有:
matplotlib 是最常見的2維庫,可以算作可視化的必備技能庫,由於matplotlib是比較底層的庫,api很多,代碼學起來不太容易。
seaborn 是建構於matplotlib基礎上,能滿足絕大多數可視化需求。更特殊的需求還是需要學習matplotlib
pyecharts 上面的兩個庫都是靜態的可視化庫,而pyecharts有很好的web兼容性,可以做到可視化的動態效果。
但是在數據科學中,幾乎都離不開pandas數據分析庫,而pandas可以做。
在本文我們可以學到用pandas做
導入數據
繪製最簡單的圖plot()
多個y的繪製圖
折線圖、條形圖、餅形圖和散點圖繪製
統計信息繪圖
箱型圖
軸坐標刻度
plot()更多精細化參數
可視化結果輸出保存
準備工作如果你之前沒有學過pandas和matpltolib,我們先安裝好這幾個庫
!pip3 install numpy!pip3 install pandas!pip3 install matplotlib
已經安裝好,現在我們導入這幾個要用到的庫。使用的是倫敦天氣數據,一開始我們只有12個月的小數據作為例子
#jupyter notebook中需要加這行代碼
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
#讀取天氣數據
df = pd.read_csv('data/london2018.csv')
df
plot最簡單的圖選擇Month作為橫坐標,Tmax作為縱坐標,繪圖。
大家注意下面兩種寫法
#寫法1df.plot(x='Month', y='Tmax')plt.show()
橫坐標軸參數x傳入的是df中的列名Month
縱坐標軸參數y傳入的是df中的列名Tmax
折線圖上面的圖就是折線圖,折線圖語法有三種
df.plot(x='Month', y='Tmax')
df.plot(x='Month', y='Tmax', kind='line')
df.plot.line(x='Month', y='Tmax')
df.plot.line(x='Month', y='Tmax')plt.show()
#grid繪製格線df.plot(x='Month', y='Tmax', kind='line', grid=True)plt.show()
多個y值上面的折線圖中只有一條線, 如何將多個y繪製到一個圖中
比如Tmax, Tmin
df.plot(x='Month', y=['Tmax', 'Tmin'])plt.show()
條形圖df.plot(x='Month', y='Rain', kind='bar')#同樣還可以這樣畫#df.plot.bar(x='Month', y='Rain')plt.show()
水平條形圖bar環衛barh,就可以將條形圖變為水平條形圖
df.plot(x='Month', y='Rain', kind='barh')#同樣還可以這樣畫#df.plot.bar(x='Month', y='Rain')plt.show()
多個變量的條形圖
df.plot(kind='bar', x = 'Month', y=['Tmax', 'Tmin'])plt.show()
散點圖df.plot(kind='scatter', x = 'Month', y = 'Sun')plt.show()
餅形圖df.plot(kind='pie', y='Sun')plt.show()
上圖繪製有兩個小問題:
legend圖例不應該顯示
月份的顯示用數字不太正規
df.index = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']df.plot(kind='pie', y = 'Sun', legend=False)plt.show()
更多數據一開頭的數據只有12條記錄(12個月)的數據,現在我們用更大的倫敦天氣數據
import pandas as pd
df2 = pd.read_csv('data/londonweather.csv')
df2.head()
df2.Rain.describe()
count 748.000000mean 50.408957std 29.721493min 0.30000025% 27.80000050% 46.10000075% 68.800000max 174.800000Name: Rain, dtype: float64
上面一共有748條記錄, 即62年的記錄。
箱型圖df2.plot.box(y='Rain')#df2.plot(y='Rain', kind='box')plt.show()
直方圖df2.plot(y='Rain', kind='hist')#df2.plot.hist(y='Rain')plt.show()
縱坐標的刻度可以通過bins設置
df2.plot(y='Rain', kind='hist', bins=[0,25,50,75,100,125,150,175, 200])#df2.plot.hist(y='Rain')plt.show()
多圖並存df.plot(kind='line', y=['Tmax', 'Tmin', 'Rain', 'Sun'], #4個變量可視化 subplots=True, #多子圖並存 layout=(2, 2), #子圖排列2行2列 figsize=(20, 10)) #圖布的尺寸plt.show()
df.plot(kind='bar', y=['Tmax', 'Tmin', 'Rain', 'Sun'], #4個變量可視化 subplots=True, #多子圖並存 layout=(2, 2), #子圖排列2行2列 figsize=(20, 10)) #圖布的尺寸plt.show()
加標題給可視化起個標題
df.plot(kind='bar', y=['Tmax', 'Tmin'], #2個變量可視化 subplots=True, #多子圖並存 layout=(1, 2), #子圖排列1行2列 figsize=(20, 5),#圖布的尺寸 title='The Weather of London') #標題plt.show()
保存結果可視化的結果可以存儲為圖片文件
df.plot(kind='pie', y='Rain', legend=False, figsize=(10, 5), title='Pie of Weather in London')plt.savefig('img/pie.png')plt.show()
df.plot更多參數df.plot(x, y, kind, figsize, title, grid, legend, style)
x 只有dataframe對象時,x可用。橫坐標
y 同上,縱坐標變量
kind 可視化圖的種類,如line,hist, bar, barh, pie, kde, scatter
figsize 畫布尺寸
title 標題
grid 是否顯示格子線條
legend 是否顯示圖例
style 圖的風格
查看plot參數可以使用help
import pandas as pdhelp(pd.DataFrame.plot)
python天氣查詢練手案例
python計算個稅
python繪製漫天雪花
python計算個稅
python實現吃豆豆小遊戲
python跳一跳練手小案例
在線學編程
http://dida100.com/it/
長按2秒學編程學單詞
求「贊」與「在看」🙏