【資料處理】Seaborn-NBA資料分析案例(2)

語言: CN / TW / HK

highlight: a11y-dark theme: awesome-green


我報名參加金石計劃1期挑戰——瓜分10萬獎池,這是我的第3篇文章,點選檢視活動詳情

注意:本案例使用 Jupyter NotebookJupyterNotebook 進行案例演示,資料集為NBA球員資訊資料集。本專案將進行完整的資料分析演示。資料集相關介紹請參考上一篇文章:【資料處理】Seaborn-NBA資料分析案例(1) - 掘金 (juejin.cn)

1. 球員資料分析

1.1 基本資料排名分析

1.1.1 步驟一:匯入資料

匯入相關模組並獲取資料:

```python import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns

1. 獲取資料集

NBA = pd.read_csv("nba_2017_nba_players_with_salary.csv") NBA.head() ```

1.1.2 步驟二:按照球員效率值排序

按照效率值進行排名,選出某幾列特徵,然後使用sort_value方法進行排序 - ascending=False:降序排列 - by="RPM":對RPM這列進行排序

```python NBA.loc[:, ["PLAYER","RPM","AGE"]].sort_values(by="RPM", ascending=False)

降序排列

按照效率值排名

``` 執行結果如下圖所示:

image.png

1.2 Seaborn常用的三個資料視覺化方法

1.2.1 單變數繪圖

我們將利用seaborn中的displot繪圖來分別看一下球員薪水、效率值、年齡這三個資訊的分佈情況。並且使這三張圖繪製在一個畫布中。 - 繪製條形圖 - sns.distplot:條形圖 - sns.set_style:設定主題

使用如下程式碼進行單變數繪圖: ```python

設定基本主題

sns.set_style("darkgrid") plt.figure(figsize=(10, 10))

畫三個圖:此處為第一行第一列的圖

plt.subplot(3,1,1) sns.distplot(NBA["SALARY_MILLIONS"]) plt.ylabel("salary") # 設定y軸名稱

畫第二個圖

plt.subplot(3,1,2) sns.distplot(NBA["RPM"]) plt.ylabel("RPM") # 設定y軸名稱

畫第三個圖

plt.subplot(3,1,3) sns.distplot(NBA["AGE"]) plt.ylabel("AGE") # 設定y軸名稱

儲存影象

plt.savefig("./test1.png") ```

程式碼執行結果如下圖所示:

image.png

1.2.2 雙變數繪圖

使用joijtplot檢視年齡和薪水之間的關係

  • kind="hex":六邊形顯示
  • 年齡小的時候,薪資也比較少
  • 大部分資料都分佈於左下角
  • 展示球員年齡和薪水之間的關係,採用不同的kind方式(等高線圖/hex/散點等),我們可以整體感受一下集中特點。

之間已經讀取過資料了,此處我們直接呼叫sns.jointplot繪製雙變數六邊形圖,執行如下程式碼:

python sns.jointplot(NBA.AGE, NBA.SALARY_MILLIONS, kind="hex") 程式碼執行結果如圖所示:

image.png

1.2.3 多變數繪圖

用seaborn中的pairplot繪圖展示多個變數之間的關係 - 由於資料集太大了,我們獲取原資料集的幾個特徵作為資料。

步驟一:獲取資料集

python multi_NBA = NBA.loc[:, ['RPM','AGE','SALARY_MILLIONS','ORB']] multi_NBA 執行結果:

image.png

步驟二:繪製多變數關係圖

繪製多變數之間關係的散點圖,並且儲存影象。

```python sns.pairplot(multi_NBA)

儲存影象

plt.savefig("./test3.png") ``` 執行結果如下圖所示:

image.png