Seaborn中文教程

Seaborn介紹:

Seaborn屬於Matplotlib的一個高級接口,爲我們進行數據的可視化分析提供了極大的方便。 
博主是爲了入門Kaggle比賽而學習的Seaborn,下面是博主的學習過程,希望可以和大家一起分享。

Step 1:安裝Seaborn

首先確定你的電腦已安裝以下應用 
- Python 2.7+ or Python 3 
- Pandas 
- Matplotlib 
- Seaborn 
- Jupyter Notebook(可選)

打開Jupyter Notebook, 過幾秒鐘會彈出網頁窗口Home。 
Home

點擊右側的New,新建一個Notebook,彈出一個新的網頁窗口,點擊上方可命名文件。 
Seaborn

Step 2:加載庫和數據文件

加載pandas、matplotlib、seaborn。 
這裏寫圖片描述

這裏提供了一個數據文件,下載鏈接爲: 
Pokemon.csv

用pandas讀取數據文件,並顯示前五行。 
這裏寫圖片描述

編譯後的結果爲一個列表。 
這裏寫圖片描述

Step 3:Seaborn的繪圖功能

Seaborn最大的優點之一在於其種類繁多的繪圖功能,下面我們利用lmplot()函數,用一行代碼來繪製散點圖。

我們希望x軸顯示Attack數據,y軸顯示Defense數據,則可以編寫代碼。 
這裏寫圖片描述

事實上seaborn並沒有專門用來繪製散點圖的功能,實際上我們用它來擬合和繪製迴歸線。 
"<code這裏寫圖片描述” title=”“>

幸運的是,我們可以通過設置函數的參數來得到我們想要的散點圖。用fit_reg = False 移去迴歸線,用hug參數來用不同顏色顯示Pokemon進化階段的信息。 
這裏寫圖片描述

即刻得到散點圖: 
這裏寫圖片描述

從散點圖可以看出,所有的數據點都分佈在數軸的正半軸,然而散點圖的數軸從負數開始的,我們可以對它進行改進。

Step 4:用Matplotlib定製

雖然Seaborn是Matplotlib的一個高級接口,但是我們有時候也需要用到Matplotlib。其中包括設置數軸的範圍。

我們利用Matplotlib的ylim()和xlim()函數來設置數軸的範圍。 
這裏寫圖片描述

可以得到只顯示正部分的散點圖。 
這裏寫圖片描述

Step 5:Pandas的作用

儘管這是一個Seaborn教程,pandas依然在實際應用中起到了十分重要的作用。

下面我們根據Pokemon的攻擊數據來繪製箱形圖。 
這裏寫圖片描述

得到的箱形圖: 
這裏寫圖片描述

很好,這是一個良好的開端,但是我們可以移除不需要的幾列數據。

  • 移除掉Total,因爲我們有獨立的統計數據。
  • 移除掉Stage跟Legendary,因爲它們不是攻擊統計數據。

    我們可以創建一個新的數據集stats_df,滿足我們上述的要求。 
    這裏寫圖片描述

得到了一個改進了的箱形圖。 
這裏寫圖片描述

Step 6: Seaborn 主題

Seaborn的另一個好處就是其恰到好處、開箱即用的風格主題。其默認的主題爲“darkgrid”

下一步,我們把主題改爲“whitegrid”來創建一個小提琴圖

  • 小提琴圖常常作爲箱形圖的替代
  • 小提琴圖通過小提琴的厚度展示了數據的分佈,而不僅僅是總結數據。

    根據Pokemon的主要類型,我們可以將Attack數據的分佈可視化。 
    這裏寫圖片描述

可以得到小提琴圖,x軸顯示的是Pokemon的Type1,y軸顯示的是不同Pokemon的攻擊數值。 
這裏寫圖片描述

我們很容易就可以看出,Dragon類型常常具備高攻擊值,但是不同個體間的差異也很大。

Step 7: 調色盤

Seaborn可以根據我們的需求,來設置顏色。我們可以創建一個python命令列表,用顏色的十六進制數值來設置。數值可以在Bulbapedia中尋找。

這裏寫圖片描述

就能得到一個顏色重新設置過的小提琴圖。 
這裏寫圖片描述

爲了能夠讓數據文件中的151個Pokemon都能夠在圖中簡單展示,我們可以用羣集圖 swarm plot達到這一目的。 
這裏寫圖片描述

可以得到151個數據點在羣集圖上的分佈,不同點代表不同的Pokemon。 
這裏寫圖片描述

Step 8: 圖形重疊

我們已經繪製出了小提琴圖和羣集圖,Seaborn允許我們將這兩張圖整合在一張圖上,步驟如下:

  • 首先,我們用Matplotlib設置圖形比例。
  • 然後,我們繪製小提琴圖,用inner = None將小提琴中間的木杆移去。
  • 接着,我們繪製羣集圖,並將數據點的顏色變爲黑色。
  • 最後,我們可以用Matplotlib設置一個標題。

這裏寫圖片描述

其中alpha爲透明度。 
編譯後可以得到如下圖形。 
這裏寫圖片描述

現在我們可以清晰的看到不同Pokemon的攻擊值了。那麼我們怎麼看其他的數值呢?

Step 9: 融合數據

爲了展現其他的數據,我們當然可以重複以上的步驟,繪製多張圖。但是我們同樣也可以在一張圖上表示所有的數據,這時候pandas就派上用場了。

我們可以利用pandas的melt()函數來將一些數據進行融合,這樣就可以在不同Pokemon之間直接進行比對,melt()需要導入3個參數,分別爲:

  1. 需要融合的數據列表
  2. 需要保留的ID變量,其他變量將會被Pandas融合。
  3. 融合而成的新變量的名字。

這裏寫圖片描述

顯示前五行的數據可以看到,六列數據已經融合成爲一列Stat,數值在value一列中顯示。而實際上Stat已經包含了原來列表中的六列數據。 
這裏寫圖片描述

我們爲已經融合的數據列表melted_df繪製羣集圖。 
這裏寫圖片描述

就可以得到如下的羣集圖。x軸爲Stat中融合的六個變量,y軸爲Stat的值,不同顏色代表不同的Pokemon Type 1。 
這裏寫圖片描述

這張圖表有一些細節需要完善:

  1. 擴大圖表。
  2. 使用split = True 來分隔色調。
  3. 使用我們自定義的顏色。
  4. 調整y軸的範圍
  5. 將圖例放在右側。 
    這裏寫圖片描述

    即可得到一個已經細節完善後的圖表。 
    這裏寫圖片描述

Step 10: 迷你畫廊

10.1-Heatmap 
Heatmap可以幫助可視化矩陣狀的數據。 
這裏寫圖片描述

這裏寫圖片描述

10.2-Histogram 
Histogram能夠繪製變量的數值分佈。 
這裏寫圖片描述

可以清楚的看到Pokemon的攻擊值的分佈。 
這裏寫圖片描述

10.3-Bar Plot 
條形圖可以幫助分類變量的可視化。 
這裏寫圖片描述

可以清楚的看到不同類型的Pokemon的數量。 
這裏寫圖片描述

10.4-Factor Plot 
Factor plots能夠根據類別分離圖表。 
這裏寫圖片描述

可以得到根據Stage分離的三個圖表,分別用不同顏色的點表示不同的Pokemon。 
這裏寫圖片描述

10.5-Density Plot 
密度圖顯示的是兩個變量之間的分佈。 
這裏寫圖片描述

曲線越密集的地方說明兩個變量的關係越近,越稀疏的地方說明關係越遠。 
這裏寫圖片描述

10.6-Joint Distribution Plot 
聯合分佈圖將散點圖和直方圖的信息結合起來,提供雙變量分佈的詳細信息。 
這裏寫圖片描述

這裏寫圖片描述

這裏只是介紹了Seaborn常用的繪圖功能,還有更強大的功能Example gallery需要我們去學習,去探索。

        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
            </div>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章