#湖人總冠軍#NBA投籃數(shù)據(jù)可視化更新版,4行代碼就能實(shí)現(xiàn)!
大家好,歡迎來(lái)到Crossin的編程教室!
虎撲的JRs喊了那么年“湖人總冠軍”,今年終于實(shí)現(xiàn)了!
36歲的老詹還沒(méi)有老,4座總冠軍+4次FMVP。

之前我們做過(guò)一篇NBA球員投籃數(shù)據(jù)可視化的案例:

可惜的是,文中使用到的官方接口現(xiàn)在被關(guān)閉了,導(dǎo)致代碼無(wú)法正常使用。
不過(guò)最近,公眾號(hào)法納斯特的作者小F告訴我,有大佬造了“輪子”,提供了全自動(dòng)化的接口,只需4行代碼就能實(shí)現(xiàn)。在這里就給大家分享一下。
GitHub地址:
https://github.com/theccalderon/shot_chart
也可在PyCharm里直接安裝shot-chart庫(kù)。記得版本選1.0.0的。最新版本是1.1.0,得分和未得分沒(méi)有明顯區(qū)分開,所以我們選擇安裝1.0.0版本。
大伙也可以兩個(gè)版本都下載安裝,看有什么差異。
from?shot_chart.core?import?*
#?2019-2020賽季
shots_2019?=?make_df(untar_data(URLs.SHOTS_2019))
同樣的,這位大佬也是把數(shù)據(jù)放在網(wǎng)絡(luò)上,需要通過(guò)數(shù)據(jù)請(qǐng)求才能獲取到。
通過(guò)查看源代碼(core.py),發(fā)現(xiàn)數(shù)據(jù)的請(qǐng)求地址:

地址如下,從2000-2001賽季到2019-2020賽季:
#?2000-2001賽季常規(guī)賽數(shù)據(jù)
https://nba-shot-charts.s3.amazonaws.com/shots-2000.tgz
.......................................................
#?2019-2020賽季常規(guī)賽數(shù)據(jù)
https://nba-shot-charts.s3.amazonaws.com/shots-2019.tgz
直接在瀏覽器上訪問(wèn)地址,下載壓縮包,解壓得到CSV文件。


果然是2019-2020年NBA常規(guī)賽的球員投籃數(shù)據(jù)。
統(tǒng)統(tǒng)下載下來(lái),這樣就可以直接本地調(diào)用,不用擔(dān)心被墻掉。

數(shù)據(jù)讀取代碼修改為如下,其實(shí)就是pandas讀取:
from?shot_chart.core?import?*
#?2019-2020賽季
shots_2019?=?make_df('shots-2019.csv')
2020賽季NBA的球隊(duì)名單,調(diào)用函數(shù)list_teams:
from?shot_chart.core?import?*
#?2019-2020賽季
shots_2019?=?make_df('shots-2019.csv')
#?球隊(duì)名單
print(list_teams(shots_2019))
得到結(jié)果如下:

可惜了LA Clippers(快船)和Milwaukee(雄鹿)。
兩大奪冠熱門球隊(duì),被掘金和熱火干翻船了。
今年湖人的奪冠班底,調(diào)用函數(shù)list_team_players:
from?shot_chart.core?import?*
#?2019-2020賽季
shots_2019?=?make_df('shots-2019.csv')
#?湖人奪冠班底
print(list_team_players(shots_2019,?'LA?Lakers'))
得到結(jié)果如下:

還附帶了出手次數(shù),詹姆斯、戴維斯、庫(kù)茲馬、波普、格林排前五。
臥龍鳳雛(格林、波普)得一,可安天下。
湖人2020年常規(guī)賽全隊(duì)的投籃情況,調(diào)用函數(shù)TeamShots:
from?shot_chart.core?import?*
#?2019-2020賽季
shots_2019?=?make_df('shots-2019.csv')
#?湖人隊(duì)2019-2020賽季投籃情況
Lakers?=?TeamShots(shots_2019,?"LA?Lakers")
Lakers.plot_shots()

果然是4行代碼呀~
左邊的圖綠色表示投籃得分,紅色表示投籃未得分。
右邊的圖橫坐標(biāo)表示距離,縱坐標(biāo)表示次數(shù),綠色表示出手命中次數(shù),橙色表示投籃出手次數(shù)。
FG投籃命中率,eFG真實(shí)投籃命中率。
真實(shí)投籃命中率=全場(chǎng)得分/[2×全場(chǎng)出手次數(shù)+0.44×罰球出手次數(shù)]
來(lái)看一下三旬老漢(老詹)的投籃情況吧:
from?shot_chart.core?import?*
#?2019-2020賽季
shots_2019?=?make_df('shots-2019.csv')
#?勒布朗-詹姆斯2019-2020賽季常規(guī)賽投籃可視化
james?=?PlayerShots(shots_2019,?"LeBron?James")
james.plot_shots()

可以看出,籃下是詹姆斯的主要得分點(diǎn)。
03年至20年,小皇帝到詹皇的投籃數(shù)據(jù)可視化:
from?shot_chart.core?import?*
import?pandas?as?pd
#?獲取圖表列名
shots_2000?=?make_df('shots-2000.csv')
columns_list?=?[column?for?column?in?shots_2000]
#?新建一個(gè)空的dataframe
shots_all?=?pd.DataFrame(columns=columns_list)
#?獲取2000-2020常規(guī)賽總數(shù)據(jù)
for?i?in?range(2001,?2020):
????#?文件名
????file_name?=?'shots-'?+?str(i)?+?'.csv'
????shots?=?make_df(file_name)
????#?縱向拼接
????shots_all?=?pd.concat([shots_all,?shots],?ignore_index=True)
#?輸出
#?print(shots_all)
#?詹姆斯03-20常規(guī)賽投籃可視化
james?=?PlayerShots(shots_all,?"LeBron?James")
james.plot_shots()

發(fā)現(xiàn)圖標(biāo)有點(diǎn)大,可以對(duì)core.py文件修改。

在plt.scatter中添加參數(shù)s,設(shè)置大小為3。

突然發(fā)現(xiàn)詹皇原來(lái)也如此全面,三分、籃下、中投,就沒(méi)有短板。
24號(hào)與23號(hào)之間的傳承,曼巴永存!
#?科比00-17常規(guī)賽投籃可視化
Kobe?=?PlayerShots(shots_all,?"Kobe?Bryant")
Kobe.plot_shots()

24,就是24小時(shí)都全力以赴!
再看看今年隨隊(duì)奪冠的霍師傅(霍華德):
#?霍華德04-20常規(guī)賽投籃可視化
howard?=?PlayerShots(shots_all,?"Dwight?Howard")
howard.plot_shots()

絕大多數(shù)都是內(nèi)線投籃,外線屈指可數(shù)。
曾經(jīng)的快樂(lè)獸,單換詹姆斯的存在,后來(lái)卻開啟了流浪生涯淪為替補(bǔ)。
最后在湖人浪子回頭,當(dāng)起了藍(lán)領(lǐng),拿到了屬于自己的總冠軍。
心中有一種莫名的感動(dòng),致敬我們的青春?。?!
20個(gè)CSV文件已上傳,回復(fù)「NBA」即可獲取。
萬(wàn)水千山總是情,點(diǎn)個(gè)? ?? 行不行~
作者:小F
來(lái)源:法納斯特
_往期文章推薦_
