Python 視覺化 | Seaborn5 分鐘入門 (七)——pairplot

Harry_03發表於2020-01-17

微信公眾號:「Python讀財」
如有問題或建議,請公眾號留言

Seaborn是基於matplotlib的Python視覺化庫。它提供了一個高階介面來繪製有吸引力的統計圖形。Seaborn其實是在matplotlib的基礎上進行了更高階的API封裝,從而使得作圖更加容易,不需要經過大量的調整就能使你的圖變得精緻。

今天給大家介紹的是pairplot,話不多說,直接進入正題。

注:所有程式碼均在IPython notebook中實現

pairplot中pair是成對的意思,pairplot主要展現的是變數兩兩之間的關係(線性或非線性,有無較為明顯的相關關係),照例來總覽一下pairplot的API。

image

下面用鳶尾花資料集來介紹pairplot的用法。鳶尾花資料集已經用了不少次了,但大多數人(我也)可能還不知道鳶尾花長啥樣,先上張鳶尾花的圖。

image

先匯入相關的包,並配置相關的引數

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
sns.set_style('white',{'font.sans-serif':['simhei','Arial']})
#匯入seaborn自帶iris資料集
data=sns.load_dataset("iris")  
#為了方便大家觀看,把列名換成中文的
data.rename(columns={"sepal_length":"萼片長",
                     "sepal_width":"萼片寬",
                     "petal_length":"花瓣長",
                     "petal_width":"花瓣寬",
                     "species":"種類"},inplace=True)
kind_dict = {
    "setosa":"山鳶尾",
    "versicolor":"雜色鳶尾",
    "virginica":"維吉尼亞鳶尾"
}
data["種類"] = data["種類"].map(kind_dict)
data.head() #資料集的內容如下 

image

先來直觀看看pairplot長什麼樣

sns.pairplot(data)

image

可以看到對角線上是各個屬性的直方圖(分佈圖),而非對角線上是兩個不同屬性之間的相關圖,從圖中我們發現,花瓣的長度和寬度之間以及萼片的長短和花瓣的長、寬之間具有比較明顯的相關關係。

接下來介紹一下pairplot主要的引數及其用法

kind:用於控制非對角線上的圖的型別,可選"scatter""reg"

diag_kind:控制對角線上的圖的型別,可選"hist""kde"

sns.pairplot(data,kind="reg",diag_kind="kde")

image

kind 引數設定為 "reg" 會為非對角線上的散點圖擬合出一條迴歸直線,更直觀地顯示變數之間的關係。

那對於不同種類的花,其花萼和花瓣有什麼比較鮮明的特徵嗎?我們透過hue引數把不同種類的花區分開,進行進一步分析。

hue :針對某一欄位進行分類

#不同類別的點會以不同的顏色顯現出來
sns.pairplot(data,hue="種類") 

image

我們可以從經過hue分類後的pairplot中發現,不論是從對角線上的分佈圖還是從分類後的散點圖,都可以看出對於不同種類的花,其萼片長、花瓣長、花瓣寬的分佈差異較大,換句話說,這些屬性是可以幫助我們去識別不同種類的花的。

比如,對於萼片、花瓣長度較短,花瓣寬度較窄的花,那麼它大機率是山鳶尾。

當然,可以透過palette引數來調出自己想要的顏色

palette:控制色調

sns.pairplot(data,hue="種類",palette="husl")

image

markers:控制散點的樣式

sns.pairplot(data,hue="種類",markers=["+", "s", "D"])

image

當我們想單獨研究某兩個(或多個)變數的關係時,我們只需要透過vars引數指定你想研究的變數

vars,x_vars,y_vars:選擇資料中的特定欄位,以list形式傳入

#單獨用vars引數選擇"萼片長 "和"花瓣長"兩種屬性
sns.pairplot(data,vars=["萼片長","花瓣長"]) 

image

# 用x_vars和 y_vars引數指定
# 需要注意的是,x_vars和y_vars要同時指定
sns.pairplot(data,x_vars=["萼片長","花瓣寬"],
             y_vars=["萼片寬","花瓣長"]) 

image

更多的樣式可以透過plot_kwsdiag_kws來進行控制

plot_kws:用於控制非對角線上的圖的樣式

diag_kws:用於控制對角線上圖的樣式

sns.pairplot(data,diag_kind="kde",
             plot_kws=dict(s=50,edgecolor="w",color="g",alpha=.5),
             diag_kws=dict(shade=True,color="r")) 

image

掃碼關注公眾號「Python讀財」,第一時間獲取乾貨,還可以加Python學習交流群!!
底部二維碼.png

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章