微信公眾號:「Python讀財」
如有問題或建議,請公眾號留言
Seaborn是基於matplotlib的Python視覺化庫。它提供了一個高階介面來繪製有吸引力的統計圖形。Seaborn其實是在matplotlib的基礎上進行了更高階的API封裝,從而使得作圖更加容易,不需要經過大量的調整就能使你的圖變得精緻。
今天給大家介紹的是pairplot,話不多說,直接進入正題。
注:所有程式碼均在IPython notebook中實現
pairplot中pair是成對的意思,pairplot主要展現的是變數兩兩之間的關係(線性或非線性,有無較為明顯的相關關係),照例來總覽一下pairplot的API。
下面用鳶尾花資料集來介紹pairplot的用法。鳶尾花資料集已經用了不少次了,但大多數人(我也)可能還不知道鳶尾花長啥樣,先上張鳶尾花的圖。
先匯入相關的包,並配置相關的引數
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() #資料集的內容如下
先來直觀看看pairplot長什麼樣
sns.pairplot(data)
可以看到對角線上是各個屬性的直方圖(分佈圖),而非對角線上是兩個不同屬性之間的相關圖,從圖中我們發現,花瓣的長度和寬度之間以及萼片的長短和花瓣的長、寬之間具有比較明顯的相關關係。
接下來介紹一下pairplot主要的引數及其用法
kind
:用於控制非對角線上的圖的型別,可選"scatter"
與"reg"
diag_kind
:控制對角線上的圖的型別,可選"hist"
與"kde"
sns.pairplot(data,kind="reg",diag_kind="kde")
將 kind
引數設定為 "reg"
會為非對角線上的散點圖擬合出一條迴歸直線,更直觀地顯示變數之間的關係。
那對於不同種類的花,其花萼和花瓣有什麼比較鮮明的特徵嗎?我們透過hue
引數把不同種類的花區分開,進行進一步分析。
hue
:針對某一欄位進行分類
#不同類別的點會以不同的顏色顯現出來
sns.pairplot(data,hue="種類")
我們可以從經過hue
分類後的pairplot
中發現,不論是從對角線上的分佈圖還是從分類後的散點圖,都可以看出對於不同種類的花,其萼片長、花瓣長、花瓣寬的分佈差異較大,換句話說,這些屬性是可以幫助我們去識別不同種類的花的。
比如,對於萼片、花瓣長度較短,花瓣寬度較窄的花,那麼它大機率是山鳶尾。
當然,可以透過palette
引數來調出自己想要的顏色
palette
:控制色調
sns.pairplot(data,hue="種類",palette="husl")
markers
:控制散點的樣式
sns.pairplot(data,hue="種類",markers=["+", "s", "D"])
當我們想單獨研究某兩個(或多個)變數的關係時,我們只需要透過vars
引數指定你想研究的變數
vars
,x_vars
,y_vars
:選擇資料中的特定欄位,以list
形式傳入
#單獨用vars引數選擇"萼片長 "和"花瓣長"兩種屬性
sns.pairplot(data,vars=["萼片長","花瓣長"])
# 用x_vars和 y_vars引數指定
# 需要注意的是,x_vars和y_vars要同時指定
sns.pairplot(data,x_vars=["萼片長","花瓣寬"],
y_vars=["萼片寬","花瓣長"])
更多的樣式可以透過plot_kws
和diag_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"))
掃碼關注公眾號「Python讀財」,第一時間獲取乾貨,還可以加Python學習交流群!!
本作品採用《CC 協議》,轉載必須註明作者和本文連結