Seaborn介紹:
Seaborn屬於Matplotlib的一個高級接口,爲我們進行數據的可視化分析提供了極大的方便。
博主是爲了入門Kaggle比賽而學習的Seaborn,下面是博主的學習過程,希望可以和大家一起分享。
Step 1:安裝Seaborn
首先確定你的電腦已安裝以下應用
- Python 2.7+ or Python 3
- Pandas
- Matplotlib
- Seaborn
- Jupyter Notebook(可選)
打開Jupyter Notebook, 過幾秒鐘會彈出網頁窗口Home。
點擊右側的New,新建一個Notebook,彈出一個新的網頁窗口,點擊上方可命名文件。
Step 2:加載庫和數據文件
加載pandas、matplotlib、seaborn。
這裏提供了一個數據文件,下載鏈接爲:
Pokemon.csv
用pandas讀取數據文件,並顯示前五行。
編譯後的結果爲一個列表。
Step 3:Seaborn的繪圖功能
Seaborn最大的優點之一在於其種類繁多的繪圖功能,下面我們利用lmplot()函數,用一行代碼來繪製散點圖。
我們希望x軸顯示Attack數據,y軸顯示Defense數據,則可以編寫代碼。
事實上seaborn並沒有專門用來繪製散點圖的功能,實際上我們用它來擬合和繪製迴歸線。
這裏寫圖片描述” 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個參數,分別爲:
- 需要融合的數據列表
- 需要保留的ID變量,其他變量將會被Pandas融合。
- 融合而成的新變量的名字。
顯示前五行的數據可以看到,六列數據已經融合成爲一列Stat,數值在value一列中顯示。而實際上Stat已經包含了原來列表中的六列數據。
我們爲已經融合的數據列表melted_df繪製羣集圖。
就可以得到如下的羣集圖。x軸爲Stat中融合的六個變量,y軸爲Stat的值,不同顏色代表不同的Pokemon Type 1。
這張圖表有一些細節需要完善:
- 擴大圖表。
- 使用split = True 來分隔色調。
- 使用我們自定義的顏色。
- 調整y軸的範圍
-
將圖例放在右側。
即可得到一個已經細節完善後的圖表。
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>