Seaborn教程(2)可視化數據集的分布

本教程對seaborn官方教程的理解性翻譯,在原教程的基礎上有適當的刪減嵌言,調整鳖昌。僅供參考交流

可視化數據集的分布.png

. 可視化數據集的分布

  • 單元分布
  • 雙元分布
  • 可視化數據集中的pairwise relationship

1. 單元分布 sns.distplot()

  • 直方圖(hist)+內核密度函數(kde)

在seaborn中最簡便查看單元分布的函數是distplot().該函數默認繪制直方圖并擬合內核密度估計询微。通過調整參數可以分別繪制直方圖角虫,擬合內核密度圖末购,地毯圖等熙揍。

x = np.random.normal(size=100)
sns.distplot(x);
單元分布
  • 直方圖

sns.distplot(x,kde=False) / plt.hist()

當繪制直方圖時,你需要調整的參數是bin的數目(組數)盖灸。displot()會默認給出一個它認為比較好的組數蚁鳖,但是嘗試不同的組數可能會揭示出數據不同的特征。
sns.displot(x,bins=20,kde=False,rug=True)

圖片.png

當繪制直方圖時赁炎,最重要的參數是bin以及vertical醉箕,以確定直方圖的組數和放置位置
sns.distplot(x, bins=20, kde=False, rug=True);

圖片.png
  • 核密度估計

sns.distplot(x,hist=False) / sns.kdeplot(x)

核密度估計圖使用的較少,但其是繪制出數據分布的有用工具徙垫,與直方圖類似讥裤,KDE圖以一個軸的高度為準,沿著另外的軸線編碼觀測密度姻报。

sns.displot(x,hist=False,rug=True)
圖片.png

繪制KDE圖比繪制直方圖要復雜得多坞琴,每個觀測值首先要以該值為中心的正(高斯)曲線代替。然后各個點在加起來逗抑,計算支持網格點中每個點的密度值,然后將得到的曲線歸一化寒亥,使其面積小于邮府,即得到核密度估計圖

在seaborng中也有一個函數kdeplot(),使用這個函數溉奕,我們可以得到同樣的曲線褂傀,這個函數在distplot()中也被調用,但是他提供了更多更方便的借口加勤,來進行可視化調整仙辟。
sns.kdeplot(x,shae=Ture)

圖片.png

參數bw(binwidth)同直方圖的bin一樣,控制了估算與數據間的緊密程度鳄梅。與我們之前提到的內核寬度一致叠国,默認情況下,函數會直接猜一個數據戴尸,但嘗試更大或更小bw情況的粟焊,或許會更有幫助。

sns.kdeplot(x)
sns.kdeplot(x, bw=.2, label="bw: 0.2")
sns.kdeplot(x, bw=2, label="bw: 2")
plt.legend();
圖片.png

使用cut參數,可以控制曲線繪制多遠的極限值项棠。然而這僅僅只是影響曲線如何繪制悲雳,并不會影響曲線本身

sns.kedplot(x,shade=True,cut=0)
sns.rugplot(x)
圖片.png
  • 擬合參數分布

sns.distplot(x,kde=False,fit=stats,gamma)

你也可以通過使用distplot()來擬合出一個數據集的參數分布,直觀上來評估其余觀測數據是否關系密切香追。

x = np.random.gamma(6, size=200)
sns.distplot(x, kde=False, fit=stats.gamma);
圖片.png

2. 二元變量分布 sns.jointplot()

seaborn也能用來可視化二元變量的分布合瓢,最簡單的方法是使用jointplot(),這個函數能夠產生一個多面板的圖像,在圖像上包括兩個變量之間的關系透典,在單獨的坐標中還繪制出了各個變量的分布晴楔。

mean,cov=[0,1],[(1,.5),(.5,1)]
data = np.random.multivariate_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=["x", "y"])
  • 散點圖

sns.jointplot(x='x',y='y',data=df)

可視化二元分布最常見的方式是繪制散點圖。散點圖通過散點位置來代表x,y值掷匠。這和地毯圖繪制在二維上類似滥崩。你可以通過matlibplot中的plt.scatter繪制散點圖,當然你也可以直接使用sns.jointplot來繪制讹语。

sns.jointplot(x="x", y="y", data=df);
sns.jointplot.png

通過調節(jié)參數kind={scatter,hex,reg,resid,kde}可繪制不同種類的圖钙皮。

  • Hexbin圖

sns.jointplot(x=x,y=y,data=df,kind='hex')

一個直方圖的二維模擬被稱為“Hexbin”圖,因為這類圖通過六角箱顏色的深淺來表示落于六角箱類觀測值的數目顽决。因此這類圖比較適用于觀察較大的數據集短条。該圖可以使用plt.hexbin繪制,當然也可以調參使用jointplot()繪制才菠,當使用時最好設置為白色背景茸时,圖像效果最佳。

x,y=np.random.mutivariate_normal(mean,cov,1000).T
with sns.axes_style("white")
        sns.jointplot(x=x,y=y,kind="hex",color='k')
Hexinplot.png
  • 核密度估計

sns.jointplot(x='x',y='y',data=df,kind='kde')

sns.kdeplot(df.x,df.y)

也可以通核密度函數來表現(xiàn)二元分布的分布赋访,在seaborn可都,這樣的圖通過等高線圖來表現(xiàn)二元分布的。

sns.jointplot(x="x", y="y", data=df, kind="kde");
kedplot.png

sns也提供kedplot()函數來讓你直接繪制二維核密度圖蚓耽。這樣你就可以繪制這類圖到一個特定的matplotlib軸上渠牲。

f,ax=plt.subplots(figsize(6,6))
sns.kedplot(df.x,df.y,ax=ax)
sns.rugplot9(df.x,color='g',ax=ax)
sns.rugplot(df.y,veritical=True,ax=ax)
kedplot+rugplot.png
  • sns.kedplot(df.x,df.y,n_level=60,shade=True)

如果你希望你的二維變量密度更連續(xù)步悠,你可以通過增加等高線數量來完成

f,ax=subplots(figsize=(6,6))
cmp=sns.cubehelix_palette(as_cmap=True,dark=0,light=1,reverse=True)
sns.kedplot(df.x,df.y,cmap=map,n_level=60,shade=True)
kdeplot.png
  • JointGrid 高級圖像管理對象

jointplot()使用JointGrid來管理圖形签杈。如果你想更靈活的繪圖可以通過使用JointGrid。jointplot()在繪圖后將返回jointplot對象鼎兽,你可以用他來添加更多的圖層或調整其他可視化答姥。

g=sns.joinplot(x='x',y='y',data=df,kind='kde',color='m')
g.plot_joint(plt.scatter,c='w',s=30,linewidth=1,marker='+')
g.ax_joint.collection[0].set_alpha(0)
g.set_axis_label("$X$","$Y$")
jointgrid.png

3.可視化成對關系sns.pairplot()

為了繪制一個數據集中多個成對的二元分布,你可以使用pairplot()功能谚咬,該功能將創(chuàng)建矩陣鹦付,來展現(xiàn)兩兩變量間的關系。默認情況择卦,各單變量分布將繪制在對角線上睁壁。

iris=sns.load_dataset("iris")
sns.paiplot(iris)
pairplot.png

高級圖像管理對象PairGrid

和jointplot()與JointGrid的關系一樣背苦,可以使用PairGrid對pairplot進行更多個性化設計。

g=sns.Pairgrid(iris)
g.map_diag(sns.kdeplot)
g.map_offdig(snsn.kdeplot,cmap="Blues_d",n_levels=6)
圖片.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末潘明,一起剝皮案震驚了整個濱河市行剂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钳降,老刑警劉巖厚宰,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遂填,居然都是意外死亡铲觉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門吓坚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撵幽,“玉大人,你說我怎么就攤上這事礁击⊙卧樱” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵哆窿,是天一觀的道長链烈。 經常有香客問我,道長挚躯,這世上最難降的妖魔是什么强衡? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮码荔,結果婚禮上漩勤,老公的妹妹穿的比我還像新娘。我一直安慰自己缩搅,他們只是感情好锯七,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著誉己,像睡著了一般。 火紅的嫁衣襯著肌膚如雪域蜗。 梳的紋絲不亂的頭發(fā)上巨双,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音霉祸,去河邊找鬼筑累。 笑死,一個胖子當著我的面吹牛丝蹭,可吹牛的內容都是我干的慢宗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼镜沽!你這毒婦竟也來了敏晤?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤缅茉,失蹤者是張志新(化名)和其女友劉穎嘴脾,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體蔬墩,經...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡译打,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拇颅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奏司。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖樟插,靈堂內的尸體忽然破棺而出韵洋,到底是詐尸還是另有隱情,我是刑警寧澤岸夯,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布麻献,位于F島的核電站,受9級特大地震影響猜扮,放射性物質發(fā)生泄漏勉吻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一旅赢、第九天 我趴在偏房一處隱蔽的房頂上張望齿桃。 院中可真熱鬧,春花似錦煮盼、人聲如沸短纵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽香到。三九已至,卻和暖如春报破,著一層夾襖步出監(jiān)牢的瞬間悠就,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工充易, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留梗脾,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓盹靴,卻偏偏與公主長得像炸茧,于是被迫代替她去往敵國和親瑞妇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內容

  • 第三章 分布數據集的可視化 在處理一組數據時梭冠,通常首先要做的是了解變量是如何分布的辕狰。這一章將簡要介紹seborn中...
    未禾鹽閱讀 5,414評論 1 5
  • 設置繪圖可以在jupyter notebook顯示 可以使用下面三種方法繪圖 直接使用DataFrame繪圖,比如...
    _我和你一樣閱讀 1,316評論 0 1
  • 在湯海峰湯總(QQ/微信:49701762)群里妈嘹,這個叫李夢悅的分享很不錯柳琢,我記錄下來分享給大家: 我叫李夢悅,很...
    安梓閱讀 365評論 0 1
  • 繁星怒放的夏夜 在前頭搔首弄姿 在放聲肆掠的言語 在眼前空游思度 …撩撥吧润脸,我想 柬脸,撩撥吧……我不必和你分享我的幻...
    黑超假面人閱讀 175評論 0 0
  • 有沒有這樣一個周末。 不要他的陪伴毙驯,也不約姐姐妹妹聊天喝茶倒堕,因為聊來聊去,內容還不是彼此的他爆价。就這樣一個周末垦巴,能不...
    Ceciliare閱讀 130評論 0 0