日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

NBA数据分析初探(上)

發布時間:2024/4/24 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 NBA数据分析初探(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#%matplotlib inline    ##魔法命令了解一下, 內嵌畫圖  是IPython的內置magic函數,那么在Pycharm中是不會支持的。

#載入數據:
data=pd.read_csv('D:/pycharm_ngs_programs/data_analysis/nba_2017_nba_players_with_salary.csv')
print(data.head(5))

## 描述統計
print(data.shape)
print(data.describe())

輸出結果如下:

Unnamed: 0  Rk             PLAYER POSITION  AGE    MP    FG   FGA    FG%  
0           0   1  Russell Westbrook       PG   28  34.6  10.2  24.0  0.425   
1           1   2       James Harden       PG   27  36.4   8.3  18.9  0.440   
2           2   3      Isaiah Thomas       PG   27  33.8   9.0  19.4  0.463   
3           3   4      Anthony Davis        C   23  36.1  10.3  20.3  0.505   
4           4   6   DeMarcus Cousins        C   26  34.2   9.0  19.9  0.452   

    3P       ...         GP   MPG  ORPM  DRPM   RPM  WINS_RPM   PIE    PACE  
0  2.5       ...         81  34.6  6.74 -0.47  6.27     17.34  23.0  102.31   
1  3.2       ...         81  36.4  6.38 -1.57  4.81     15.54  19.0  102.98   
2  3.2       ...         76  33.8  5.72 -3.89  1.83      8.19  16.1   99.84   
3  0.5       ...         75  36.1  0.45  3.90  4.35     12.81  19.2  100.19   
4  1.8       ...         72  34.2  3.56  0.64  4.20     11.26  17.8   97.11   

    W  SALARY_MILLIONS  
0  46            26.50  
1  54            26.50  
2  51             6.59  
3  31            22.12  
4  30            16.96  

[5 rows x 39 columns]
       Unnamed: 0          Rk         AGE          MP          FG         FGA  
count  342.000000  342.000000  342.000000  342.000000  342.000000  342.000000   
mean   170.500000  217.269006   26.444444   21.572515    3.483626    7.725439   
std     98.871128  136.403138    4.295686    8.804018    2.200872    4.646933   
min      0.000000    1.000000   19.000000    2.200000    0.000000    0.800000   
25%     85.250000  100.250000   23.000000   15.025000    1.800000    4.225000   
50%    170.500000  205.500000   26.000000   21.650000    3.000000    6.700000   
75%    255.750000  327.750000   29.000000   29.075000    4.700000   10.400000   
max    341.000000  482.000000   40.000000   37.800000   10.300000   24.000000   

              FG%          3P         3PA         3P%       ...         
count  342.000000  342.000000  342.000000  320.000000       ...          
mean     0.446096    0.865789    2.440058    0.307016       ...          
std      0.078992    0.780010    2.021716    0.134691       ...          
min      0.000000    0.000000    0.000000    0.000000       ...          
25%      0.402250    0.200000    0.800000    0.280250       ...          
50%      0.442000    0.700000    2.200000    0.340500       ...          
75%      0.481000    1.400000    3.600000    0.373500       ...          
max      0.750000    4.100000   10.000000    1.000000       ...          

               GP         MPG        ORPM        DRPM         RPM    WINS_RPM  
count  342.000000  342.000000  342.000000  342.000000  342.000000  342.000000   
mean    58.198830   21.572807   -0.676023   -0.005789   -0.681813    2.861725   
std     22.282015    8.804121    2.063237    1.614293    2.522014    3.880914   
min      2.000000    2.200000   -4.430000   -3.920000   -6.600000   -2.320000   
25%     43.500000   15.025000   -2.147500   -1.222500   -2.422500    0.102500   
50%     66.000000   21.650000   -0.990000   -0.130000   -1.170000    1.410000   
75%     76.000000   29.075000    0.257500    1.067500    0.865000    4.487500   
max     82.000000   37.800000    7.270000    6.020000    8.420000   20.430000   

              PIE        PACE           W  SALARY_MILLIONS  
count  342.000000  342.000000  342.000000       342.000000  
mean     9.186842   98.341053   28.950292         7.294006  
std      3.585475    2.870091   14.603876         6.516326  
min     -1.600000   87.460000    0.000000         0.030000  
25%      7.100000   96.850000   19.000000         2.185000  
50%      8.700000   98.205000   29.000000         4.920000  
75%     10.900000  100.060000   39.000000        11.110000  
max     23.000000  109.870000   66.000000        30.960000  

[8 rows x 36 columns]

從數據中看幾項比較重要的信息:

球員平均年齡為26.4歲,年齡段在19-38歲;

球員平均年薪為730萬美金,當時最大的合同為年薪3000萬美金;

球員平均出場時間為21.5分鐘,某球員場均出場37.8分鐘領跑聯盟,當然也有只出場2.2分鐘的角色球員,機會來之不易。

類似的信息我們還能總結很多。

效率值相關性分析

在眾多的數據中,有一項名為“RPM”,標識球員的效率值,該數據反映球員在場時對球隊比賽獲勝的貢獻大小,最能反映球員的綜合實力。
我們來看一下它與其他數據的相關性:

dat_cor=data.loc[:,['RPM','AGE','SALARY_MILLIONS','ORB','DRB','TRB','AST','STL','BLK','TOV','PF','POINTS','GP','MPG','ORPM','DRPM']]
coor=dat_cor.corr()
sns.heatmap(coor,square=True, linewidths=0.02, annot=False) 
#seaborn中的heatmap函數,是將多維度數值變量按數值大小進行交叉熱圖展示。

由相關性分析的heatmap圖可以看出,RPM值與年齡的相關性最弱,與“進攻效率值”、“場均得分”、“場均搶斷數”等比賽技術數據的相關性最強。

我在接下來的分析中將把RPM作為評價一個球員能力及狀態的直觀反應因素之一。

球員數據分析部分

此處練習了一下pandas基本的數據框相關操作,包括提取部分列、head()展示、排序等,簡單通過幾個維度的展示,籠統地看一下16-17賽季那些球員沖在聯盟的最前頭。

data.loc[:,['PLAYER','SALARY_MILLIONS','RPM','AGE','MPG']].sort_values(by='SALARY_MILLIONS',ascending=False).head(10)
#效率值最高的10名運動員
data.loc[:,['PLAYER','RPM','SALARY_MILLIONS','AGE','MPG']].sort_values(by='RPM',ascending=False).head(10)
#出場時間最高的10名運動員
data.loc[:,['PLAYER','RPM','SALARY_MILLIONS','AGE','MPG']].sort_values(by='MPG',ascending=False).head(10)

結果如下:

Seaborn常用的三個數據可視化方法

單變量:

distplot方法可以繪制直方圖和連續密度估計,通過distplot方法seaborn使直方圖和密度圖的繪制更為簡單,

我們先利用seaborn中的distplot繪圖來分別看一下球員薪水、效率值、年齡這三個信息的分布情況,代碼如下:

#單變量:
#我們先利用seaborn中的distplot繪圖來分別看一下球員薪水、效率值、年齡這三個信息的分布情況,上代碼:
#分布及核密度展示
sns.set_style('darkgrid') #設置seaborn的面板風格
plt.figure(figsize=(12,12))
plt.subplot(3,1,1)  #拆分頁面,多圖展示
sns.distplot(data['SALARY_MILLIONS'])
plt.xticks(np.linspace(0,40,9))
plt.ylabel(u'$Salary$',size=10)

plt.subplot(3,1,2)
sns.distplot(data['RPM'])
plt.xticks(np.linspace(-10,10,9))
plt.ylabel(u'$RPM$',size=10)

plt.subplot(3,1,3)
sns.distplot(data['AGE'])
plt.xticks(np.linspace(20,40,11))
plt.ylabel(u'$AGE$',size=10)

結果如下:



雙變量:
dat1=data.loc[:,['RPM','SALARY_MILLIONS','AGE','POINTS']]
sns.jointplot(dat1.SALARY_MILLIONS,dat1.AGE,kind='kde',size=8) 


上圖展示的是球員薪水與年齡的關系,采用不同的kind方式(等高線圖/hex/散點等),我們可以整體感受一下年齡和薪水的集中特點,
大部分球員集中在22-25歲拿到5million以下的薪水,當然也有“年少成名”和“越老越妖”的情況。



多變量:
dat1=data.loc[:,['RPM','SALARY_MILLIONS','AGE','POINTS']]
sns.pairplot(dat1) #相關性展示,斜對角為分布展示,可以直觀地看變量是否具有現行關系

圖展示的是球員薪水、效率值、年齡及場均得分四個變量間的兩兩相關關系,對角線展示的是本身的分布圖,由散點的趨勢我們可以看出不同特征的相關程度。
整體看各維度的相關性都不是很強,正負值與薪水和場均得分呈較弱的正相關性,
而年齡這一屬性和其他的變量相關性較弱


參考資料 pyhton 愛好者社區#https://mp.weixin.qq.com/s/gl_8Wxl_Oq7xvGUdsHR3Bg

總結

以上是生活随笔為你收集整理的NBA数据分析初探(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。