Seaborn 介紹


Seaborn 是 Python 一個著名的數據視覺化的 package, 以 matplotlib 為基底的一個擴展包, 它提供了易於理解的統計圖和便利的繪圖指令. 詳細的功能及使用說明可以在 Seaborn官方網站 找到. 以下的內容, 為我閱讀原文網站的總結(翻譯), 提供給大家參考. 例子以目前官網 Seaborn 版本(0.9.0) 來做討論.

一般類別繪圖
首先我先以 tips 這個內建的 dataset 來作例子說明, tips為一個侍者數月來所收到的小費的紀錄. 各項說明如下:
  • total_bill: 帳單金額
  • tip: 小費金額
  • sex: 付帳單的人的性別
  • smoker: 此筆消費的團體是否有人抽菸
  • day: 交易的時間(星期幾)
  • time: 用餐的時間(午/晚)
  • size: 用餐人數


seaborn.relplot() 是一個非常好用的繪圖指令, 可以一次把數個變數的關係呈現在一張圖表上. 如下圖, x軸為total_bill; y軸為tip; column方向為time的區別; style用O/X表示有無吸菸, hue為色標, 用顏色來(加強)辨識有無吸菸; size則是藉由不同大小的圖示說明用餐人數. 

對於無時間性的dataset, 上述的功能已經很實用了. 但是如果是有時間性的dataset呢? 只要多加一個 kind 參數, 使用同樣的 seaborn.relplot() 指令亦可畫出精美的統計圖.

dots為一個有時間順序的dataset, 新增的 kind參數: Default為point. 柱狀圖 bar, 頻率圖 count, 盒鬚圖 box, swarm 散點圖...等

統計預測圖
Seaborn 也可以用來繪製線性迴歸的統計圖, 以 tips dataset 來作例子, 使用 seaborn.lmplot() 指令繪圖.

特殊類別繪圖
如果今天要繪製 日期 vs 帳單金額 的散點圖, 可以使用 seaborn.catplot() 這個指令來繪圖. 並用 kind 參數 來定義想要呈現的圖形類別. 下圖有兩種不同的參數值 - strip 和 swarm. 兩者的差別在於 swarm 的散步點不會重疊再一起.
除了散點圖, 也可以使用 kind=violin (提琴圖) 來呈現. 在這裡新增了一個參數split, 其功能是把圖形拆成一半, 節省繪圖的空間.
最後則是柱狀圖, 指令為 kind=bar.
多類型統計圖
在數據科學領域, 很多時候需要把多個數據呈現在多個圖表上面. 這時候就需要用到 matplotlib.pyplot.subplots() 這個指令. 不過本節主要是說明 Seaborn, 所以 Matplotlib 暫不再此多做說明. 只要先知道它的功能為創造出一個 1x2 的畫布來放統計圖表, 而 seaborn.boxplot()seaborn.scatterplot() 則使用 ax=axes[i] 來定義統計圖在畫布的位置.

資料集結構的視覺化
這一節採用著名的dataset, Iris(鳶尾花) 來做說明. Iris 是一個生物資訊的資料集, 內容為 Iris花類別 及 花萼和花瓣的長/寬度. 今天如果想要知道 花萼長度 和 花瓣長度 的關係. 但又希望可以有一個柱狀圖分別為兩個項目的統計. 可使用 seaborn.jointplot() 來繪製.
當然, 如果你還不滿足這個指令, 想要看到全部變數的overview. 可以使用 seaborn.pairplot() 這個指令. 這是一個相當好用的指令, 對於剛拿到一個資料集的時候, 可以先透過這個指令觀察所有變數的關係.

以上是對 Seaborn 的一個簡介. 之後我會繼續提供 seaborn 指令比較細節的總結(翻譯). 如有問題, 也請留言討論. 謝謝!

其他連結:
1. Matplotlib的介紹

張貼留言

1 留言