科比职业生涯数据分析
科比職業(yè)生涯數(shù)據(jù)分析報告
一、前言
在本次數(shù)據(jù)分析是利用Jupyter對科比職業(yè)生涯的數(shù)據(jù)集進行分析,通過對相關數(shù)據(jù)的分析,掌握Numpy, Pandas, Matplotlib, Seaborn等常用數(shù)據(jù)分析庫的用法,掌握常規(guī)的數(shù)據(jù)預處理的方法以及特征工程。
二、數(shù)據(jù)集說明
該數(shù)據(jù)集收錄了自96賽季~2016賽季,共有30697條生涯數(shù)據(jù)。每條數(shù)據(jù)都是一次出手,其中包括動作類型,投籃類型,投射距離,投射位置,是否命中等25個特征。在該數(shù)據(jù)集中我們將對以這30697條數(shù)據(jù)進行數(shù)據(jù)處理與分析。部分數(shù)據(jù)如下:
三、數(shù)據(jù)預處理
導入需要使用到的相關庫,numpy,pandas,matplotlib,pylab等
import numpy as np import pandas as pd import matplotlib.pyplot as plt from pylab import *導入數(shù)據(jù)集,展示前三行數(shù)據(jù)并統(tǒng)計每一列數(shù)據(jù)的個數(shù)
kobe = pd.read_csv('data.csv') kobe.head(3) #顯示前3行數(shù)據(jù) kobe.describe()
通過對數(shù)據(jù)集的列舉,我們可以清除的看到在shot_made_flag這一列中,總數(shù)為25697,這說明在這些數(shù)據(jù)存在空值,而這一值是是否命中,對數(shù)據(jù)分析的結果有重要的影響,所以我們需要對這些空值進行處理。
我們對空數(shù)據(jù)刪除,得到剩下的有用數(shù)據(jù),最終得到25697個有用數(shù)據(jù),這也是之后分析用到的數(shù)據(jù)。
四、數(shù)據(jù)分析
1、每個賽季出手次數(shù)
首先我們對科比在每個賽季出手的次數(shù)做一個統(tǒng)計,并以出手次數(shù)的多少排列,我們對season(賽季)這一欄進行統(tǒng)計,查看season一共有多少組數(shù)據(jù),即多少個賽季,之后將各個賽季出手次數(shù)統(tǒng)計并用柱狀圖繪制出來。
柱狀圖以賽季為x軸,命中的次數(shù)為y軸繪制,從圖中可以看出,在Jun-05這一賽季中,科比出手的次數(shù)最多,在2013-14這一賽季出手最少,從整體來看,在每個賽季中科比出手的次數(shù)都是非常多的,這可以說明科比是球隊里的主戰(zhàn)力之一。
2、賽季命中率
分析完每一賽季出手次數(shù)之后,再對賽季命中率做一個統(tǒng)計,選擇賽季與是否命中這兩個屬性,對科比的賽季命中率做統(tǒng)計,并以賽季為x軸,命中率為y軸做折線圖展示。
# 職業(yè)生涯各賽季命中率 season = kobe.pivot_table(index='season', values='shot_made_flag', aggfunc='mean') fig, ax = plt.subplots() for label in ax.xaxis.get_ticklabels():label.set_rotation(90) plt.plot(season.index, season.values) plt.title('科比職業(yè)生涯各賽季命中率示意圖') plt.xlabel('賽季') plt.ylabel('命中率')3、每一節(jié)命中率
選取period節(jié)數(shù)統(tǒng)計科比在各節(jié)中的的命中率,用來看看科比在那節(jié)的命中率最高。 # 職業(yè)生涯各賽季各節(jié)命中率 p_1 = kobe[kobe['period'] == 1].pivot_table(index='season', values='shot_made_flag', aggfunc='mean') # 第一節(jié) p_2 = kobe[kobe['period'] == 2].pivot_table(index='season', values='shot_made_flag', aggfunc='mean') # 第二節(jié) p_3 = kobe[kobe['period'] == 3].pivot_table(index='season', values='shot_made_flag', aggfunc='mean') # 第三節(jié) p_4 = kobe[kobe['period'] == 4].pivot_table(index='season', values='shot_made_flag', aggfunc='mean') # 第四節(jié) fig, ax = plt.subplots() plt.plot(p_1) plt.plot(p_2) plt.plot(p_3) plt.plot(p_4) for label in ax.xaxis.get_ticklabels(): label.set_rotation(90) plt.title('科比職業(yè)生涯各節(jié)命中率示意圖') plt.legend(('第一節(jié)', '第二節(jié)', '第三節(jié)', '第四節(jié)'), loc='best') plt.xlabel('賽季') plt.ylabel('命中率')
從示意圖可以看出科比在第四節(jié)的命中率最低,這也可以說明體力對科比投籃命中率有很大的影響。
4、投籃位置
在對科比投籃命中率做出統(tǒng)計后,我們再來看科比投籃的位置。
我們選取combined_shot_type屬性中各個出手方式,有跳投、上籃、扣籃、補籃、勾手、擦板,不同的出手方式以不同的顏色通過散點圖的方式將出手位置在圖上繪制出來,得到以下散點圖。
從圖中可以看出籃球場大致的外觀,其中紅黃綠聚集的地方是球框底下,這里適合上籃、扣籃和補籃,再看灰色點(跳投),灰色點之間存在一條明顯的分界線,而這條分界線就是三分線,科比出手的位置可以說是遍布整個球場,這也說明科比出手最多的方式是跳投。
5、進攻方式與命中率
接著對科比的進攻方式與出手命中率,做統(tǒng)計,將每次出手的方式combined_shot_type統(tǒng)計出來,繪制一個餅圖,再對每次出手方式不同出手是否命中做一個餅圖,觀察進攻進攻方式與命中率。
#科比進攻的方式 plt.figure(figsize=(15, 5)) plt.subplot(121) attack_method = kobe['combined_shot_type'].value_counts() plt.pie(attack_method, labels=['跳投', '上籃', '扣籃', '補籃','勾手','擦板'], autopct='%1.2f%%') plt.title('科比進攻方式') plt.legend(loc= 1) #科比投籃命中率 plt.subplot(122) shooting = kobe[kobe['shot_made_flag']==1]['combined_shot_type'].value_counts() list1 = attack_method.tolist() list2 = shooting.tolist() list3 = attack_method.tolist() for i in range(len(list1)): list3[i] = list2[i]/list1[i] hits_df = pd.Series(list3); plt.pie(hits_df, labels=['跳投', '上籃', '扣籃', '補籃','勾手','擦板']) plt.title('科比各種投籃方式命中率') plt.show()
從左邊進攻方式餅圖可以看出科比跳投的次數(shù)最多,占了76.70%,最少是擦板,這也和投籃位置散點圖對應上了,從右邊命中率中可以看到扣籃的命中率是最高的,而跳投的命中率最低,這是符合實際情況的,因為跳投次數(shù)是最多且出手位置也是最多的,不同的出手位置也對命中率有一定的影響,這種情況是非常正常的。
6、各區(qū)域投籃次數(shù)
統(tǒng)計shot_zone_basic不同出手區(qū)域的出手次數(shù),以出手區(qū)域為縱坐標,投籃次數(shù)為橫坐標繪制條形圖。
#科比在各個位置投籃的次數(shù) area = kobe['shot_zone_basic'].value_counts() b = np.array([0,1,2,3,4,5,6]) plt.barh(b,area,align ='center') plt.yticks(b,('中距離','進攻有理區(qū)','底線之外的三分','除進攻有理區(qū)外的禁區(qū)','右邊底線三分','左邊底線三分','后場')) plt.xlabel('次數(shù)',fontsize=10) plt.title('科比在各區(qū)域投籃次數(shù)',fontsize=20) plt.tight_layout()# 緊湊顯示圖片,居中顯示 plt.show()
從圖中可以看到,科比大多數(shù)在中距離出手,三分也投了挺多,根據(jù)科比的出手習慣,可以說明科比不管三分還是兩分,都是非常的自信的。
7、其他因素對出手的影響
下面是對其他因素對科比出手投籃的影響。下面三個屬性是投籃的位置、距離、范圍,其實這三個屬性可以看作一個屬性,都是代表投球位置的。這里將三個屬性都按具體位置的類別繪制散點圖
import matplotlib.cm as cm plt.figure(figsize=(20,10)) def scatter_plot_by_category(feat): alpha = 0.1 gs = kobe.groupby(feat) cs = cm.rainbow(np.linspace(0, 1, len(gs))) for g, c in zip(gs, cs): plt.scatter(g[1].loc_x, g[1].loc_y, color=c, alpha=alpha) plt.subplot(131) scatter_plot_by_category('shot_zone_area') plt.title('投籃位置') plt.subplot(132) scatter_plot_by_category('shot_zone_basic') plt.title('投籃距離') plt.subplot(133) scatter_plot_by_category('shot_zone_range') plt.title('投籃范圍')
第一個圖是shot_zone_area屬性的,圖中紅色和橙色是右側投球區(qū),墨綠色和綠色是左側投球區(qū),藍色是中間投球區(qū);第二個圖是shot_zone_basic屬性的,圖中橙色是籃板底下、藍色是除進攻有理區(qū)外的禁區(qū),墨綠色是中距離,紫色是底線之外的三分,紅色是右邊底線三分,綠色是左邊底線三分;第三個圖是shot_zone_range屬性的,圖中紅色是除進攻有理區(qū)外的禁區(qū),綠色是進攻有理區(qū),紫色是中距離,藍色是三分線外。這三個圖都是對科比投球位置的一個統(tǒng)計。
五、總結
通過本次對科比職業(yè)生涯數(shù)據(jù)的分析,我們可以看到科比在他的職業(yè)生涯里為球隊的貢獻是非常大的,他那“凌晨四點半的洛杉磯”更是科比為了比賽訓練的曼巴精神更是每一位籃球愛好者所追求的精神,曼巴精神永存!!!r.i.p
總結
以上是生活随笔為你收集整理的科比职业生涯数据分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 下午回来才后知百密于一疏忽
- 下一篇: vue.js框架的生命周期:常用钩子函数