終極Python Seaborn教程

Seaborn概論

Seaborn為Matplotlib提供了一個(gè)高級(jí)接口蜡塌,它是一個(gè)功能強(qiáng)大但有時(shí)笨拙的Python可視化庫(kù)银锻。

在Seaborn的官方網(wǎng)站上身辨,他們聲明:

如果matplotlib“試圖讓簡(jiǎn)單的事情變得容易屋群,讓困難的事情變得可能”褂删,那么Seaborn試圖使一系列明確的困難事物也容易。

我們發(fā)現(xiàn)這是對(duì)Seaborn強(qiáng)項(xiàng)的一個(gè)很好的總結(jié)膀跌。在實(shí)踐中遭商,“一系列明確的困難事物”包括:

—使用美學(xué)上令人愉悅的默認(rèn)主題。

—設(shè)置自定義調(diào)色板捅伤。

—制作有吸引力的統(tǒng)計(jì)圖劫流。

—簡(jiǎn)易且靈活地顯示分布。

—從矩陣和數(shù)據(jù)幀可視化信息丛忆。

最后三點(diǎn)是為什么Seaborn是我們探索性分析的首選工具祠汇。它使你很容易快速而有效地“了解”你的數(shù)據(jù)。

然而蘸际,Seaborn是Matplotlib的補(bǔ)充座哩,而不是替代品。有些調(diào)整仍然需要Matplotlib粮彤,我們還將討論如何做到這一點(diǎn)根穷。

如何學(xué)習(xí)Seaborn—主動(dòng)模式:

Seaborn在Python中簡(jiǎn)化了數(shù)據(jù)可視化,但仍有許多特點(diǎn)导坟。因此屿良,學(xué)習(xí)Seaborn的最好方法就是做中學(xué)。

免費(fèi)視頻教程:www.mlxs.top

這個(gè)過程會(huì)讓你直覺了解你能用Seaborn做什么惫周,留下文檔作為進(jìn)一步的指導(dǎo)尘惧。這是從零到熟練的最快的方法。

在我們開始之前給一個(gè)提示:

我們?cè)噲D使本教程盡可能精簡(jiǎn)递递,這意味著我們不會(huì)太多的細(xì)節(jié)喷橙,任何一個(gè)主題。如果你想了解更多關(guān)于一個(gè)特性的信息登舞,可以打開Seaborn文檔贰逾。

Seaborn教程內(nèi)容

我們將介紹Seaborn庫(kù)最重要的范例,而不是僅僅向您展示如何制作一堆繪圖菠秒。此外疙剑,我們將舉例說明每個(gè)概念。

以下是我們將在本教程中介紹的步驟:

——安裝Seaborn

——導(dǎo)入庫(kù)和數(shù)據(jù)集

——Seaborn的繪圖功能

散點(diǎn)圖

——用Matplotlib定制

——Pandas的角色

箱形圖

——Seaborn主題

小提琴圖表

——調(diào)色板践叠。

群體圖

——疊加圖

——把它們放在一起

——Pokédex(迷你畫廊)言缤。

熱圖

直方圖

條形圖

因子圖

密度圖

聯(lián)合分布圖


第1步:安裝Seaborn

首先,第一件事:加油禁灼,打氣管挟,安裝起來吧!

接下來弄捕,確保您的計(jì)算機(jī)上安裝了以下內(nèi)容:

——Python 2.7 + 或 Python 3

——Pandas

——Matplotlib

——Seaborn

——Jupyter Notebook(可選僻孝,但推薦)

我們強(qiáng)烈建議安裝Anaconda分發(fā)拳芙,其中包含所有這些擴(kuò)展包。只需按照下載頁(yè)面上的說明操作即可皮璧。

安裝了Anaconda之后,只需啟動(dòng)Jupyter(通過命令行或Navigator應(yīng)用程序)并打開一個(gè)新notebook:

免費(fèi)視頻教程:www.mlxs.top

步驟2:導(dǎo)入庫(kù)和數(shù)據(jù)集

讓我們開始導(dǎo)入Pandas分飞,它是管理關(guān)系(即表格式)數(shù)據(jù)集的一個(gè)很好的庫(kù):

免費(fèi)視頻教程:www.mlxs.top

現(xiàn)在我們準(zhǔn)備導(dǎo)入數(shù)據(jù)集悴务。

提示:我們給每個(gè)導(dǎo)入的庫(kù)一個(gè)別名。然后譬猫,我們可以用

調(diào)用Pandas讯檐,用

調(diào)用Matplotlib,用

調(diào)用Seaborn染服。

今天别洪,我們將使用一個(gè)很酷的Pokémon數(shù)據(jù)集(第一代)。這里是免費(fèi)下載

免費(fèi)視頻教程:www.mlxs.top

一旦下載了CSV文件柳刮,就可以將它與Pandas一起導(dǎo)入挖垛。

提示:參數(shù)索引? index_col=0

僅僅意味著我們將數(shù)據(jù)集的第一列作為ID列。

免費(fèi)視頻教程:www.mlxs.top

正如你所看到的秉颗,我們有原始數(shù)據(jù)151(A.K.best151)Pokémon痢毒。


第3步:Seaborn的繪圖功能

繪圖功能的多樣性是Seaborn最大的優(yōu)點(diǎn)之一。例如蚕甥,散點(diǎn)圖只是使用lmplot()函數(shù)的一行代碼哪替。

有兩種方法可以做到這一點(diǎn)。

—第一種方法(推薦)是將DataFrame傳遞給data=參數(shù)菇怀,同時(shí)將列名傳遞給axes參數(shù)凭舶,x=和y=。

—第二種方法是直接將數(shù)據(jù)序列傳遞給軸參數(shù)爱沟。

例如帅霜,讓我們比較一下我們的Pokémon的攻擊和防御狀態(tài):

免費(fèi)視頻教程:www.mlxs.top

看起來更好,但是我們可以進(jìn)一步改進(jìn)這個(gè)散點(diǎn)圖钥顽。例如义屏,我們所有的Pokémon都有正面攻擊和防御值,但是我們的軸限制在零度以下蜂大。讓我們看看我們?cè)鯓硬拍芙鉀Q這個(gè)問題…


步驟4:用Matplotlib定制

記住闽铐,Seaborn是Matplotlib的高級(jí)接口。從我們的經(jīng)驗(yàn)來看奶浦,大部分情況下會(huì)使用Seaborn兄墅,但有時(shí)你需要帶上Matplotlib。

設(shè)置軸限制是其中之一澳叉,但過程很簡(jiǎn)單:

首先隙咸,調(diào)用您的海運(yùn)繪圖功能為正常沐悦。

然后,調(diào)用Matplotlib的定制函數(shù)五督。在這種情況下藏否,我們將使用它的 ylim()

和? xlim()? 函數(shù)。

這里是我們的新的散點(diǎn)圖與敏感軸限制:

免費(fèi)視頻教程:www.mlxs.top

有關(guān)MaMattLIB定制功能的更多信息充包,請(qǐng)查看其文檔副签。


第5步:Pandas的角色

盡管這是一個(gè)Seaborn教程,Pandas實(shí)際上扮演著非常重要的角色基矮。你看淆储,Seaborn的繪圖功能是從一個(gè)合理格式化的基本數(shù)據(jù)框中受益。

例如家浇,假設(shè)我們想為我們的Pokémon的戰(zhàn)斗狀態(tài)做一個(gè)方塊圖:

免費(fèi)視頻教程:www.mlxs.top

這是一個(gè)合理的開始本砰,但是有些欄目我們可能想刪除:

1.我們可以刪除總數(shù),因?yàn)槲覀冇袉为?dú)的統(tǒng)計(jì)數(shù)據(jù)钢悲。

2.我們可以刪除舞臺(tái)和傳奇欄目点额,因?yàn)樗鼈儾皇菓?zhàn)斗統(tǒng)計(jì)。

事實(shí)證明譬巫,這并不容易在Seaborn單獨(dú)進(jìn)行咖楣。相反,對(duì)數(shù)據(jù)文件進(jìn)行預(yù)格式化要簡(jiǎn)單得多芦昔。

讓我們創(chuàng)建一個(gè)新的數(shù)據(jù)名為? stats_df 诱贿,它只保留統(tǒng)計(jì)列:

免費(fèi)視頻教程:www.mlxs.top

在本教程的范圍之外,潛入大熊貓咕缎,但這里有一個(gè)方便的作弊表珠十。

第6步:Seaborn主題

Seaborn的另一個(gè)優(yōu)點(diǎn)是它帶有正派風(fēng)格的主題。默認(rèn)主題稱為“暗網(wǎng)格”凭豪。

接下來焙蹭,我們將把主題改為“白色網(wǎng)格”,同時(shí)制作小提琴繪圖嫂伞。

1.小提琴繪圖在替代方框圖方面非常有用孔厉。

2.他們顯示的分布(通過小提琴的厚度),而不是僅匯總統(tǒng)計(jì)帖努。

例如撰豺,我們可以通過Pokémon的主要類型來可視化攻擊的分布:

免費(fèi)視頻教程:www.mlxs.top

正如你所看到的,龍型往往具有比幽靈類型更高的攻擊統(tǒng)計(jì)拼余,但它們也有較大的差異污桦。

現(xiàn)在,Pok -艾蒙的粉絲們可能會(huì)發(fā)現(xiàn)一些關(guān)于這個(gè)情節(jié)的不和諧的東西:顏色是荒謬的匙监。為什么草型是彩色粉色還是水彩型橙色凡橱?我們必須解決這個(gè)問題小作!


步驟7:調(diào)色板

幸運(yùn)的是,Seabn允許我們?cè)O(shè)置定制的調(diào)色板稼钩。我們可以簡(jiǎn)單地創(chuàng)建一個(gè)有序的Python顏色十六進(jìn)制值列表顾稀。

讓我們使用BulPaula來幫助我們創(chuàng)建一個(gè)新的調(diào)色板:

免費(fèi)視頻教程:www.mlxs.top

完美,現(xiàn)在我們可以簡(jiǎn)單地使用? ?palette=? ?參數(shù)來重新調(diào)整我們的圖表坝撑。

免費(fèi)視頻教程:www.mlxs.top

好多了础拨!

小提琴圖是偉大的可視化分布。但是绍载,由于我們的數(shù)據(jù)集中只有151個(gè)PoEKMON,所以我們可以簡(jiǎn)單地顯示每個(gè)點(diǎn)滔蝉。

這就是群集陰謀發(fā)生的地方击儡。這個(gè)可視化將顯示每個(gè)點(diǎn),而“堆疊”具有相似值的那些:

免費(fèi)視頻教程:www.mlxs.top

這很方便蝠引,但是我們不能把我們的群體圖和小提琴圖結(jié)合起來嗎阳谍?畢竟,它們顯示相似的信息螃概,對(duì)吧矫夯?


步驟8:疊加圖

答案是肯定的。

使用Seaborn覆蓋繪圖非常簡(jiǎn)單吊洼,它與Matplotlib的工作方式相同训貌。這就是我們要做的:

首先,我們將使用Matplotlib使我們的圖形更大冒窍。

然后递沪,我們將繪制小提琴圖。然而综液,我們將設(shè)置? inner=Non??沒有刪除小提琴內(nèi)的條形款慨。

接下來,我們將繪制群體圖谬莹。這一次檩奠,我們將使點(diǎn)黑色,所以他們彈出更多附帽。

最后埠戳,我們將使用Matplotllib設(shè)置標(biāo)題。

免費(fèi)視頻教程:www.mlxs.top
免費(fèi)視頻教程:www.mlxs.top

真棒士葫,現(xiàn)在我們有一個(gè)漂亮的圖表告訴我們攻擊值是如何分布在不同的Pokémon類型乞而。但我們還想看到其他所有的統(tǒng)計(jì)數(shù)據(jù)呢?


第9步:把它們放在一起

當(dāng)然慢显,我們可以為每個(gè)狀態(tài)重復(fù)圖表爪模,但是我們也可以把這些信息組合成一個(gè)圖表欠啤。我們只需要事先做一些與熊貓爭(zhēng)吵的數(shù)據(jù)。

首先屋灌,這是一個(gè)提醒我們的數(shù)據(jù)格式:

免費(fèi)視頻教程:www.mlxs.top

正如你所看到的洁段,我們所有的統(tǒng)計(jì)數(shù)據(jù)都在不同的列中。相反共郭,我們想把它們“融化”成一列祠丝。

要做到這一點(diǎn),我們將使用熊貓的? melt()??函數(shù)除嘹。它需要3個(gè)參數(shù):

首先写半,數(shù)據(jù)框要融化。

第二尉咕,保持變量(Pandas將融化所有其他)叠蝇。

最后,命名為新的熔化變量年缎。

以下是輸出:

免費(fèi)視頻教程:www.mlxs.top

所有6個(gè)屬性列都被“融化”為一個(gè)悔捶,新的屬性列指示原始屬性(HP、攻擊单芜、防御蜕该、Sp.攻擊、Sp.防御或速度)洲鸠。例如堂淡,這里很難看到,但是Balbasuro現(xiàn)在有6行數(shù)據(jù)扒腕。

事實(shí)上淤齐,如果你打印這兩個(gè)數(shù)據(jù)框的形狀…

免費(fèi)視頻教程:www.mlxs.top
免費(fèi)視頻教程:www.mlxs.top

最后,讓我們?yōu)橐粋€(gè)更可讀的圖表做一些最后的調(diào)整:

1.擴(kuò)大情節(jié)袜匿。

2.使用 split()=True

3.使用我們自定義的Pokemon調(diào)色板更啄。

4.調(diào)整Y軸限制在0結(jié)束。

5.把圖例放在右邊居灯。

免費(fèi)視頻教程:www.mlxs.top
免費(fèi)視頻教程:www.mlxs.top

最終群體圖

搞定


第10步: Pokédex(迷你圖庫(kù))

我們將以一些快速數(shù)據(jù)可視化來結(jié)束本教程祭务,只是為了讓您了解Seaborn的可能。

10.1 -熱圖

HealMaPS幫助你可視化矩陣式數(shù)據(jù)怪嫌。

免費(fèi)視頻教程:www.mlxs.top


10.2 - Histogram

直方圖允許您繪制數(shù)值變量的分布义锥。

免費(fèi)視頻教程:www.mlxs.top


10.3 條形圖

條形圖幫助您可視化分類變量的分布。

免費(fèi)視頻教程:www.mlxs.top


10.4因素圖

因子圖可以很容易地通過分類類來劃分情節(jié)岩灭。

免費(fèi)視頻教程:www.mlxs.top


10.5密度圖

密度圖顯示了兩個(gè)變量之間的分布拌倍。

提示:考慮用散點(diǎn)圖覆蓋這個(gè)。

免費(fèi)視頻教程:www.mlxs.top


10.6結(jié)合分布圖

聯(lián)合分布圖結(jié)合了來自散布圖和直方圖的信息,為您提供了雙變量分布的詳細(xì)信息柱恤。

免費(fèi)視頻教程:www.mlxs.top

到這里你已經(jīng)完成了這個(gè)Python Seaborn教程数初!

我們剛剛結(jié)束了一個(gè)重要的Seaborn范例,并向你們展示了很多例子梗顺。隨意使用這一頁(yè)連同官方Seaborn圖庫(kù)作為您的項(xiàng)目前進(jìn)的參考泡孩。免費(fèi)視頻教程:www.mlxs.top

作者:徐大白? ?來源:終極Python Seaborn教程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市寺谤,隨后出現(xiàn)的幾起案子仑鸥,更是在濱河造成了極大的恐慌,老刑警劉巖变屁,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眼俊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡粟关,警方通過查閱死者的電腦和手機(jī)泵琳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來誊役,“玉大人,你說我怎么就攤上這事谷市』坠福” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵迫悠,是天一觀的道長(zhǎng)鹏漆。 經(jīng)常有香客問我,道長(zhǎng)创泄,這世上最難降的妖魔是什么艺玲? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮鞠抑,結(jié)果婚禮上饭聚,老公的妹妹穿的比我還像新娘。我一直安慰自己搁拙,他們只是感情好秒梳,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著箕速,像睡著了一般酪碘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盐茎,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天兴垦,我揣著相機(jī)與錄音,去河邊找鬼。 笑死探越,一個(gè)胖子當(dāng)著我的面吹牛狡赐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扶关,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼阴汇,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了节槐?” 一聲冷哼從身側(cè)響起搀庶,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铜异,沒想到半個(gè)月后哥倔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揍庄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年咆蒿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚂子。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沃测,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出食茎,到底是詐尸還是另有隱情蒂破,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布别渔,位于F島的核電站附迷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏哎媚。R本人自食惡果不足惜喇伯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拨与。 院中可真熱鬧稻据,春花似錦、人聲如沸买喧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岗喉。三九已至秋度,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钱床,已是汗流浹背荚斯。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人事期。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓滥壕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親兽泣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绎橘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361