本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
以下文章來源于大鄧和他的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 inlineimport matplotlib.pyplot as plt
import numpy as np
import pandas as pd
#讀取天氣資料df = pd.read_csv('data/london2018.csv')
df
plot最簡單的圖
選擇Month作為橫坐標,Tmax作為縱坐標,繪圖,
大家注意下面兩種寫法
#寫法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.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 pd
help(pd.DataFrame.plot)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/37669.html
標籤:Python
上一篇:Python資料可視化:3D動態圖,讓你的足跡實作在地圖上
下一篇:程式莫名停止(無報錯)
