數據科學 | 可視化神器Seaborn的超全介紹

2021-02-19 運籌OR帷幄

↑↑↑↑↑點擊上方藍色字關注我們!


作者:Huangwei AI

編者按:

數據可視化對於數據分析和科研論文的結果分析十分重要。python近年來呈現了許多優秀的可視化庫,最經典的當屬matplotlib。在matplotlib基礎上,seaborn集成了基本的統計功能,並預設了很多精美的圖形樣式和配色。這篇文章帶你入門seaborn的基本功能,讓你的作圖技巧再上一個等級。


基本信息

Seaborn是一個用Python製作統計圖形的庫。它建立在matplotlib之上,並與panda數據結構緊密集成

以下是seaborn提供的一些功能:

一個面向數據集的API,用於檢查多個變量之間的關係

專門支持使用分類變量來顯示觀察結果或匯總統計數據

用於可視化單變量或雙變量分布以及在數據子集之間進行比較的選項

各類因變量線性回歸模型的自動估計與作圖

方便查看複雜數據集的整體結構

用於構建多圖塊網格的高級抽象,使您可以輕鬆地構建複雜的可視化

對matplotlib圖形樣式與幾個內置主題的簡潔控制

選擇調色板的工具,忠實地揭示您的數據模式

Seaborn的目標是使可視化成為探索和理解數據的核心部分。它的面向數據集的繪圖功能對包含整個數據集的數據流和數組進行操作,並在內部執行必要的語義映射和統計聚合以生成信息圖。

下面是一個例子:

import seaborn as snssns.set()tips = sns.load_dataset("tips")sns.relplot(x="total_bill", y="tip", col="time",            hue="smoker", style="smoker", size="size",            data=tips);

這裡發生了一些事情。讓我們一個一個來看:

1. 我們導入seaborn,這是這個簡單示例所需的唯一庫。

在幕後,seaborn使用matplotlib繪製圖片。許多任務只能通過seaborn函數來完成,但是進一步的定製可能需要直接使用matplotlib。下面將更詳細地解釋這一點。對於交互式工作,建議在matplotlib模式下使用Jupyter/IPython接口,否則必須調用matplotlib.pyplot.show來查看圖片。

2. 我們應用默認的seaborn主題、縮放和調色板。

這將使用matplotlib rcParam系統,並將影響所有matplotlib圖的外觀,即使您沒有使用seaborn創建它們。除了默認主題之外,還有其他幾個選項,您可以獨立控制繪圖的樣式和比例,以便在表示上下文中快速轉換您的工作(例如,在演講期間生成具有可讀字體的繪圖)。如果您喜歡matplotlib的默認設置,或者喜歡不同的主題,可以跳過這一步,仍然使用seaborn繪圖函數。

3. 我們加載一個示例數據集

tips = sns.load_dataset("tips")

文檔中的大多數代碼將使用load_dataset()函數來快速訪問示例數據集。這些數據集沒有什麼特別的;它們只是pandas的數據倉庫,我們可以把pandas裝進去用read_csv或手工構建它們。許多示例使用「tips」數據集,它非常乏味,但對於演示非常有用。tips數據集說明了組織數據集的「整潔」方法。如果您的數據集以這種方式組織,您將從seaborn中獲得最大的好處,下面將對此進行更詳細的說明

4. 我們繪製了具有多個語義變量的分面散點圖。

sns.relplot(x="total_bill", y="tip", col="time",            hue="smoker", style="smoker", size="size",            data=tips)

這個特殊的圖顯示了tips數據集中五個變量之間的關係。其中三個是數值型的,兩個是分類型的。兩個數值變量(total_bill和tip)確定軸上每個點的位置,第三個變量(size)確定每個點的大小。一個分類變量將數據集分割成兩個不同的軸(facet),另一個分類變量確定每個點的顏色和形狀。

所有這些都是通過對seaborn函數relplot()的單個調用完成的。請注意,我們只提供了數據集中變量的名稱以及希望它們在圖中扮演的角色。與直接使用matplotlib不同,不需要將變量轉換為可視化的參數(例如,為每個類別使用的特定顏色或標記)。翻譯是由seaborn自動完成的。這讓用戶能夠專注於他們想要圖片回答的問題。

replot函數和kind參數

沒有通用的最佳數據可視化方法。不同的問題最好通過不同的可視化來回答。Seaborn試圖簡化在不同的可視表示之間的切換,這些表示可以使用相同的面向數據集的API進行參數化。

之所以使用relplot()函數來命名,是因為它被設計成可視化許多不同的統計關係。雖然散點圖是一種非常有效的方法,但是一個變量表示時間度量的關係最好用一條線表示。relplot()函數有一個方便參數 kind,可以方便地切換到這個替代表示:

dots = sns.load_dataset("dots")sns.relplot(x="time", y="firing_rate", col="align",            hue="choice", size="coherence", style="choice",            facet_kws=dict(sharex=False),            kind="line", legend="full", data=dots);

請注意大小和樣式參數是如何在散點和線圖中共享的,但是它們對這兩種可視化的影響是不同的(改變標記區域和符號與線寬和虛線)。我們不需要記住這些細節,讓我們專注於情節的整體結構和我們想要傳達的信息。

統計估計和誤差條

通常我們感興趣的是一個變量作為其他變量的函數的平均值。許多海運函數可以自動執行統計估計,這是必要的,以回答這些問題:

fmri = sns.load_dataset("fmri")sns.relplot(x="timepoint", y="signal", col="region",            hue="event", style="event",            kind="line", data=fmri);

當統計值被估計時,seaborn將使用bootstrapping來計算置信區間並繪製代表估計不確定性的誤差條。

seaborn的統計估計超越了描述性統計。例如,還可以使用lmplot()增強散點圖,使其包含線性回歸模型(及其不確定性):

sns.lmplot(x="total_bill", y="tip", col="time", hue="smoker",           data=tips

專業分類圖

標準散點圖和線狀圖顯示數值變量之間的關係,但許多數據分析涉及分類變量。在seaborn中有幾種專門的繪圖類型,它們經過了優化,用於可視化這類數據。可以通過catplot()訪問它們。與relplot()類似,catplot()的思想是公開一個通用的面向數據集的API,該API在一個數值變量和一個(或多個)分類變量之間關係的不同表示上進行泛化。

這些表示在表示底層數據時提供了不同的粒度級別。在最精細的層次上,你可能希望通過繪製散點圖來調整點在分類軸上的位置,這樣它們就不會重疊:

sns.catplot(x="day", y="total_bill", hue="smoker",            kind="swarm", data=tips);

或者,你可以使用核密度估計來表示採樣點的底層分布:

sns.catplot(x="day", y="total_bill", hue="smoker",            kind="violin", split=True, data=tips);

或者你可以在每個嵌套的類別中顯示唯一的平均值和它的置信區間:

sns.catplot(x="day", y="total_bill", hue="smoker",            kind="bar", data=tips);

可視化數據集結構

在seaborn中還有另外兩種圖形級別的函數,可用於對多個圖塊進行可視化。它們都是面向數據集結構的。一個是jointplot(),專注於單一的關係:

iris = sns.load_dataset("iris")sns.jointplot(x="sepal_length", y="petal_length", data=iris);

另一個是pairplot(),它具有更廣闊的視圖,顯示了所有成對關係和邊緣分布,可選地以某個分類變量為條件:

sns.pairplot(data=iris, hue="species");

在可視化表示方面,jointplot()和pairplot()都有一些不同的選項,它們都是建立在類的基礎上的,這些類允許更徹底地定製多個plot圖形(分別是JointGrid和PairGrid)。

 號外!『運籌OR帷幄』入駐知識星球!


隨著算法相關專業熱度和難度崗位對專業人才要求的提高,考研、讀博、留學申請、求職的難度也在相應飆升。

『運籌OR帷幄』特建立『算法社區』知識星球,依託社區30w+專業受眾和30+細分領域碩博微信群,特邀國內外名校教授、博士及騰訊、百度、阿里、華為等公司大咖與大家一起聊算法。快來掃碼加入,點對點提問50位大咖嘉賓!


# 加入知識星球,您將收穫以下福利 #

全球Top名校教授|博士和名企研發高管一起交流算法相關學術|研發乾貨

中國你能說出名字的幾乎所有大廠|歐美數家大廠(資深)算法工程師入駐

依託『運籌OR帷幄』30w+專業受眾和30+細分領域碩博微信群的算法技術交流

以上所有公司|高校獨家內推招聘|實習機會、多家offer選擇指導

以面試題|作業題|業界項目為學習資料學習算法乾貨,從小白變成大咖

享受『運籌OR帷幄』各大城市線下Meetup免費入場資格,拓展人脈

可以在 公眾號後臺 回復關鍵詞:「pandas教程及代碼」獲取本文的示例代碼與文件,如果覺得有用, 請勿吝嗇你的留言和贊哦!~

—— 完 ——

相關焦點

  • Python數據可視化—Seaborn
    今天為大家分享的小技巧是python的可視化畫圖庫Seaborn。相信很多小俠客用過matplotlib、pyecharts等可視化庫,可是為什麼還要介紹Seaborn呢?因為它修復了上述兩個庫的一些缺點,比如Seaborn提供了大量的高級接口和自定義主題,而matplotlib沒有這些接口使得很難確定哪些設置來自定義圖表。
  • Python數據可視化-seaborn Iris鳶尾花數據
    p=5261首先介紹一下Iris鳶尾花數據集,內容摘自百度百科:Iris數據集是常用的分類實驗數據集,由Fisher, 1936收集整理。「Iris也稱鳶尾花卉數據集,是一類多重變量分析的數據集。數據集包含150個數據集,分為3類,每類50個數據,每個數據包含4個屬性。
  • Python Seaborn綜合指南,成為數據可視化專家
    這在數據科學中非常重要,因為我們經常處理大量雜亂的數據。對於數據科學家來說,具有可視化的能力是至關重要的。我們的利益相關者或客戶將更多地依賴於視覺提示,而不是複雜的機器學習模型。有大量優秀的Python可視化庫可用,包括內置的matplotlib。但Seaborn對我來說很重要。它將美學魅力與技術洞察力無縫地結合在一起,我們很快就會看到這一點。
  • 長文乾貨|數據可視化必備Python Seaborn綜合指南,一文搞定可視化!
    這在數據科學中非常重要,因為我們經常處理大量雜亂的數據。對於數據科學家來說,具有可視化的能力是至關重要的。我們的利益相關者或客戶將更多地依賴於視覺提示,而不是複雜的機器學習模型。有大量優秀的Python可視化庫可用,包括內置的matplotlib。但Seaborn對我來說很重要。它將美學魅力與技術洞察力無縫地結合在一起,我們很快就會看到這一點。
  • python繪圖之美:seaborn統計數據可視化
    Seaborn旨在使可視化成為探索和理解數據的核心部分。它的面向數據集的繪圖函數對包含整個數據集的數據流和數組進行操作,並在內部執行必要的語義映射和統計聚合以生成信息圖。seaborn提供的功能包括:散點圖# 導入seaborn庫import seaborn as sns# 應用默認的seaborn主題、縮放和調色板sns.set()# 加載一個示例數據集tips = sns.load_dataset
  • 用數據可視化工具Seaborn繪製圖表
    使用seaborn和Pokemon(口袋妖怪)數據集的屬性,我們將創建一些非常有趣的可視化效果。我們首先要看的是散點圖。散點圖散點圖使用點來表示不同數值變量的值。每個點在水平軸和垂直軸上的位置表示單個數據點的值。它們用於觀察變量之間的關係。
  • 數據挖掘從入門到放棄(五)seaborn 的數據可視化
    「 數據可視化可以讓我們很直觀的發現數據中隱藏的規律,察覺到變量之間的互動關係,幫助我們更好地解釋現象和發現數據價值,做到一圖勝千文的說明效果。http://seaborn.pydata.org/index.html」python數據分析的可視化庫有:matplotlib 是可視化的必備技能庫,比較底層,api很多,學起來不太容易。seaborn 是建構於matplotlib基礎上,能滿足絕大多數可視化需求。
  • 輕鬆用 Seaborn 進行數據可視化
    )輕鬆用 Seaborn 進行數據可視化摘要:本文屬於 Seaborn 的基礎教程,介紹了 直方圖、聯合分布圖、矩陣圖、箱形圖等,通過本文可以看出,使用 seaborn 可以輕鬆的進行數據可視化。『Python數據之道』已整合本文的相關原始碼到 jupyter notebook 文件中,如需獲取,請在公眾號後臺回復 「code」。Seaborn 是一個數據可視化庫,可幫助在Python中創建有趣的數據可視化。 大多數數據分析需要識別趨勢和建立模型。 本文將幫助您開始使用 Seaborn庫創建數據可視化。
  • 好享學丨Seaborn:一行代碼生成酷炫狂拽的數據集可視化
    之前看其他大佬的項目,只在意他們通過可視化的數據集,對數據特徵挖掘的思路,但沒有在意他們做可視化的工具。輪到自己做的時候就發現,wtf!matplotlib可以更難用一點嘛?別人酷炫狂拽,坐標軸上還有直方圖的可視化究竟是怎麼弄的?今天碰到了Seaborn的庫,一行代碼就出圖,愛了!Seaborn介紹Seaborn是Python的數據統計圖形庫。它基於matplotlib構建,並與pandas數據結構緊密集成。Seaborn功能簡介
  • 數據可視化:Seaborn入門!
    -本篇文章介紹一個以matplotlib為底層,更容易定製化作圖的庫Seaborn Seaborn其實是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,在大多數情況下使用seaborn就能做出很具有吸引力的圖,而使用matplotlib就能製作具有更多特色的圖。
  • Seaborn常用的10種數據分析圖表
    數據科學」,星標公眾號重磅乾貨,第一時間送達☞500g+超全學習資源免費領取內置示例數據集seaborn內置了十幾個示例數據集,通過load_dataset函數可以調用。# 查看數據集種類import seaborn as snssns.get_dataset_names()
  • seaborn可視化數據框中的多個列元素
    seaborn提供了一個快速展示資料庫中列元素分布和相互關係的函數,即pairplot函數,該函數會自動選取數據框中值為數字的列元素,通過方陣的形式展現其分布和關係
  • 百川歸海,四類圖統攬統計圖:Seaborn|可視化系列03
    ,需要較多數據處理過程,語句就變得繁瑣,因此seaborn針對這類需求,基於matplotlib提供了更高層的接口,擅長統計數據的可視化。seaborn可視化的寫法和matplotlib基本相同。seaborn可視化效果圖seaborn對pandas數據結構的支持非常好,能充分利用DataFrame的特點而不需要做格式轉換。
  • 十分鐘掌握Seaborn,進階Python數據可視化分析
    Seaborn 可以實現 Python 環境下的絕大部分探索性分析的任務,圖形化的表達幫助你對數據進行分析,而且對 Python 的其他庫(比如 Numpy/Pandas/Scipy)有很好的支持。那麼現在開始,十分鐘的時間,你就可以了解 Seaborn 中常用圖形的繪製方法,以及進階的可視化分析技巧。
  • python數據科學系列:seaborn入門詳細教程
    數據分析三劍客進行了逐一詳細入門介紹,今天推出系列第4篇教程:seaborn。返回數據集格式為Pandas.DataFrame對象。當前內置了10幾個數據集,常用的經典數據集如下:本文後續所有繪圖主要基於前2個數據集完成。seaborn內置了大量集成繪圖接口,往往僅需一行代碼即可實現美觀的圖表結果。按照數據類型,大體可分為連續性(數值變量)和離散型(分類數據)兩類接口。
  • Python可視化 | Seaborn經濟學人經典圖表仿製
    上篇原創推文使用了R-ggplot2 實現了經濟學人經典的圖表仿製實現R-ggplot2 經典經濟學人圖表仿製,所以這期呢,我們就使用Python-seaborn實現這個經典的經濟學人圖表再現。主要涉及的知識點如下:Python-seaborn regplot回歸線性擬合圖繪製Python-seaborn 繪製擬合線圖首先,我們預覽下數據(部分):其中Region_new 列則是根據相關要求更改的新列,作圖也是以次數據為基礎的。
  • python數據可視化(一)seaborn介紹及繪圖風格設置
    首先,我們還是來看一下seaborn庫主要學習的內容及篇幅安排。seaborn整體布局及風格設置seaborn調色板及顏色設置seaborn單變量分析繪圖(直方圖、條形圖)seaborn回歸分析繪圖>seaborn繪製散點圖(分布散點圖、分簇散點圖)seaborn繪製盒圖、小提琴圖seaborn繪製熱度圖seaborn多圖繪製及facetgrid使用方法對於seaborn
  • 【可視化】seaborn常用的10種數據分析圖表
    內置示例數據集 seaborn內置了十幾個示例數據集,通過load_dataset函數可以調用。其中包括常見的泰坦尼克、鳶尾花等經典數據集。# 查看數據集種類import seaborn as snssns.get_dataset_names()import seaborn as sns# 導出鳶尾花數據集data = sns.load_dataset('iris')
  • Python可視化21|Seaborn.catplot(上)-小提琴圖等四類圖
    2、繪圖數據集準備還是使用鳶尾花iris數據集:Python可視化|matplotlib10-繪製散點圖scatter(方法二)#該方法有時候會卡巴斯基,所以棄而不用#import seaborn as sns#iris_sns = sns.load_dataset("iris")數據集查看
  • 基於 Python 實現交互式數據可視化的工具(用於 Web)
    (給數據分析與開發加星標,提升數據技能)英文:Alark Joshi,轉自:數據派(ID:datapi),翻譯:陳雨琳這學期(