seabron是一個功能強大的python繪圖庫,由於其簡易使用的特性,以及與pandas高度整合的特性,使得seaborn受到資料科學家的歡迎,以下的教學將會以官方教學文檔作為主要素材,並輔以說明。
1. 什麼是seaborn
seaborn為python繪圖函式庫,以matplotlib為基礎封裝了許多實用的統計圖表,相較於matplotlib,seaborn的預設圖形更為好看,語法更為簡潔,並且良好的支援了pandas函式庫,如果其欲繪製圖形是seaborn支援的,推薦使用seaborn作為繪圖的工具。
2. 安裝seaborn
安裝seaborn的方式也相當簡單,在終端機中輸入
pip install seaborn
如果使用conda環境,也可在終端機輸入
conda install seaborn
3. 快速上手
使用seaborn找尋變數間關係
首先,先載入seaborn內建的資料集tips,這個資料集紀錄了餐廳客人給得小費以及相關的基本資料。
[python]
import seaborn as sns
tips = sns.load_dataset("tips")
tips.head()
[/python]
可以看到這個資料集包含了當次消費的總帳單(total_bill)、所給的小費(tip)、客人的性別(sex)、是否抽煙(smoker)、當時的星期(day),是晚餐還是午餐(time)等等。
此時seaborn的繪圖功能可以幫助我們將資料之間的關係描繪清楚,假設我們對於客人的總消費與給得小費之間的關係感到興趣,我們可以利用散點圖將(total_bill, tip)所形成的資料點繪製在平面上。 為了達到這個目標,我們調用seaborn所提供的relplot函式。
首先,讓我們先看看relplot的函式參數。
[python]
seaborn.relplot(x=None, y=None, hue=None, size=None, style=None, data=None, row=None, col=None, col_wrap=None, row_order=None, col_order=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=None, dashes=None, style_order=None, legend='brief', kind='scatter', height=5, aspect=1, facet_kws=None, **kwargs)
[/python]
#注意relplot是seaborn 0.9.0之後的版本出現的新函式,如果要查詢目前的seaborn的版本可以在互動環境下(在終端機打入python)輸入下面兩行程式碼。載入seaborn套件,並查詢載入套件的版本。
[python]
import seaborn as sns
sns.__version__
[/python]
當發現seaborn的版本小於0.9.0,可在終端機環境輸入下列指令,促使seaborn更新到最新版本。
[python]
pip install seaborn -U
[/python]
使用seaborn繪製第一個圖表
在第一個例子,我們主要使用data、x、y這三個參數,其中data接受pandas提供的DataFrame資料格式作為輸入,x以及y是data裡面的column名,也是我們欲繪製關係的變數,因此,我們能寫出下列的程式碼。
[python]
sns.relplot(x="total_bill", y="tip", data=tips)
[/python]
在這裡,我們告訴seaborn我們要使用tips這個資料集作為繪製資料集,並使用裡面的total_bill以及tip變數繪製關係圖,由kind=’scatter’可以看出預設的繪製圖形為散布圖。
使用hue與style表現更複雜關係
由圖形可以看出,當整體帳單的金額越高,所付的小費也更高,符合我們對於小費的預期(造比例付小費)。而控制圖形的美學表現,可以幫助我們繪製出更複雜的圖形,relplot中的hue參數可以指定變數使得繪製出的圖形根據指定變數映射到不同的顏色。 舉例來說,如果我們將客人是否抽煙當作變數放置於hue參數中,則我們有以下結果。
[python]
sns.relplot(x="total_bill", y="tip", hue="smoker", data=tips)
[/python]
由以上圖形,客人是否抽煙相對平均的分佈在圖表中,似乎顯示客人是否抽煙對於小費的影響似乎不太明顯。除了顏色之外,我們也可以利用style變數改變資料點的形狀。如以下的例子。
[python]
sns.relplot(x="total_bill", y="tip", style="smoker", data=tips)
[/python]
此時,我們便可以結合style以及hue,繪製出更複雜的圖形,讓我們將用餐時間也考慮進去。
[python]
sns.relplot(x="total_bill", y="tip", style="smoker", hue='time', data=tips)
[/python]
從這張圖中可以看到,晚餐時段的帳單金額傾向更高。
小結
在利用seaborn函式庫,我們可以將原先數據繪製成易於理解的圖形。在下一節的教學中,將著重於類別資料的繪圖處理。