matplotlib是python最常見的繪圖包,強大之處不言而喻。然而在數據科學領域,可視化庫-Seaborn也是重量級的存在。
由於matplotlib比較底層,想要繪製漂亮的圖非常麻煩,需要寫大量的代碼。
Seaborn是在matplotlib基礎上進行了高級API封裝,圖表裝飾更加容易,你可以用更少的代碼做出更美觀的圖。同時,Seaborn高度兼容了numy、pandas、scipy等庫,使得數據可視化更加方便快捷。
話不多說,先來展示一下Seaborn的風采:
熱力圖
小提琴圖
散點矩陣圖
多元散點圖
帶邊際分佈的Hexbin圖
下面正式開始講解如何使用Seaborn繪圖
功能簡介
Seaborn讓coder專注於可視化分析,提供更多高級接口,無需將過多時間用於數據處理和圖表裝飾,一般而言,它主要有以下功能:
- 計算多變量間關係的面向數據集接口
- 可視化類別變量的觀測與統計
- 可視化單變量或多變量分佈並與其子數據集比較
- 控制線性迴歸的不同因變量並進行參數估計與作圖
- 對複雜數據進行易行的整體結構可視化
- 對多表統計圖的製作高度抽象並簡化可視化過程
- 提供多個內建主題渲染 matplotlib 的圖像樣式
- 提供調色板工具生動再現數據
安裝Seaborn
安裝最新版本的Seaborn非常簡單,使用pip命令即可:
pip install seaborn
Python版本:3.6.x
Seaborn的依賴庫有:numpy、scipy、matplotlib、pandas
導入Seaborn庫,一般使用:
import seaborn as sns
查看Seaborn版本:
sns.__version__
# 本文使用最新版本:0.9.0
風格管理
Seaborn裝載了一些默認主題風格,通過sns.set()方法實現。
sns.set()可以設置5種風格的圖表背景:darkgrid, whitegrid, dark, white, ticks,通過參數style設置,默認情況下爲darkgrid風格:
更改爲whitegrid風格:
你還可以通過改變參數palette來調整顏色:
提示:有人會問上面的代碼從哪加載數據集?是這樣的,Seaborn會內置一些數據集,通過load_data()方法加載大家有興趣可以去官方教程看看有哪些內置數據集本文都會用Seaborn內置數據集講解案例 。
點、線混合繪圖函數 - relplot()
relplot()是seaborn中非常重要的繪圖函數,它可以用於繪製散點圖和線圖,通過參數kind改變繪圖類型。
- 散點圖:relplot(kind='scatter')
- 線圖:relplot(kind='line')
注:默認情況下爲散點圖
舉個例子:
上面加載了內置數據集-tips(小費數據集),並對total_bill和tip字段繪製散點分佈圖。
tips數據集:
tips數據集字段說明:
- total_bill:總消費
- tip:小費
- sex:性別
- smoker:是否吸菸
- day:周幾
- time:用餐類型
前面繪製了total_bill(總消費)和tip(小費)的散點關係圖,我們可以清晰地看到這兩者成正相關性。
如果在上面的基礎上再區分時間,顯示這次消費屬於一週的周幾,並用不同顏色標記點傳遞參數 hue='day':
性別不同會對這個分佈關係產生影響,我們繪製男、女兩張圖表傳遞參數 col='sex':
性別不同、用餐類型也不同的情況下,分佈是什麼樣的,可以繪製多張圖表傳遞參數 col='sex',row='time':
你也可以繪製線圖,只需要傳遞參數kind='line':
lineplot()和scatter()函數
lineplot()和scatter()分別用於繪製線圖和散點圖,前面說過relplot()函數已經覆蓋這兩個繪圖功能,所以就不贅述了,有意者可以自研。
繪製線性迴歸模型-lmplot()函數
lmplot()函數用以繪製迴歸模型,描述線性關係。
依然以小費數據集爲例:
這是一個散點圖+線性迴歸+95%置性區間的組合圖
你調整置性區間的大小,傳遞參數ci:60:
對smoker(是否吸菸)做分類處理,得到兩個不同的迴歸曲線,傳遞參數 hue='smoker' :
繪製非參數迴歸模型(局部加權線性迴歸),傳遞參數 lowess=True:
分類散點圖 - stripplot()函數
當有一維數據是分類數據時,散點圖成了條帶形狀,這裏就用到stripplot()函數。
箱圖 - boxplot()函數
箱形圖(Box-plot)又稱爲盒須圖、盒式圖或箱線圖,是一種用作顯示一組數據分散情況資料的統計圖。
它主要用於反映原始數據分佈的特徵,還可以進行多組數據分佈特徵的比 較。
箱線圖的繪製方法是:
- 先找出一組數據的最大值、最小值、中位數和兩個四分位數;
- 然後, 連接兩個四分位數畫出箱子;
- 再將最大值和最小值與箱子相連接,中位數在箱子中間。
提琴圖 - violinplot()函數
小提琴圖結合了箱型圖和密度圖的特徵,用於展示數據的分佈形狀。粗黑線表示四分數範圍,延伸的細線表示95%的置信區間,白點爲中位數。
小提琴圖彌補了箱型圖的不足,可以展示數據分佈是雙模還是多模。
總結
本介紹了Seaborn安裝、風格配置以及各類繪圖函數的使用,當然這裏只是列舉了小部分函數和功能,拋磚引玉,爲展示seaborn的強大之處。希望Seaborn能成爲大家數據科學路上的得力助手!