Seaborn5分鐘入門(七)——pairplot

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

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

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

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

pairplot

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

發佈了17 篇原創文章 · 獲贊 15 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章