來自公眾號:大鄧和他的Python
常見的數據可視化庫有:
matplotlib 是最常見的2維庫,可以算作可視化的必備技能庫,由于matplotlib是比較底層的庫,api很多,代碼學起來不太容易。
seaborn 是建構于matplotlib基礎上,能滿足絕大多數可視化需求。更特殊的需求還是需要學習matplotlib
pyecharts 上面的兩個庫都是靜態的可視化庫,而pyecharts有很好的web兼容性,可以做到可視化的動態效果。
但是在數據科學中,幾乎都離不開pandas數據分析庫,而pandas可以做
數據采集?如何批量采集網頁表格數據?
數據讀取??pd.read_csv/pd.read_excel
數據清洗(預處理)??理解pandas中的apply和map的作用和異同
可視化,兼容matplotlib語法(今天重點)
在本文我們可以學到用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作為縱坐標,繪圖。
大家注意下面兩種寫法
#寫法1
df.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.000000
mean 50.408957
std 29.721493
min 0.300000
25% 27.800000
50% 46.100000
75% 68.800000
max 174.800000
Name: 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 pd
help(pd.DataFrame.plot)
●編號936,輸入編號直達本文
●輸入m獲取文章目錄
往期推薦
用Python,炫酷地圖輕松繪制,一起來學習吧
世界Python開發調查統計報告,請查收
用Python,Bilibili二次元妹子視頻輕松搞到手!
三個操作,讓Python編程更細膩
這個大廠的副總裁又出事了!
點擊“閱讀原文”,領取 2020 年最新免費技術資料大全
↓↓↓?