NBA投籃資料視覺化,4行程式碼就能實現!
36歲的老詹還沒有老,4座總冠軍+4次FMVP。
湖人總冠軍, Kobe! this is for u!
今天給大家介紹一個好東西~
只需4行程式碼就能實現。投籃資料視覺化
GitHub地址:
https://github.com/theccalderon/shot_chart
在PyCharm上直接安裝shot-chart庫,記得版本選1.0.0的。
最新版本是1.1.0,得分和未得分沒有明顯區分開,所以選擇安裝1.0.0版本。
大夥也可以兩個版本都下載安裝,看有什麼差異。
from shot_chart.core import * # 2019-2020賽季 shots_2019 = make_df(untar_data(URLs.SHOTS_2019))
同樣的這位大佬也是把資料放在網路上,需要通過資料請求才能獲取到。
通過檢視原始碼(core.py),發現數據的請求地址。
地址如下,從2000-2001賽季到2019-2020賽季。
# 2000-2001賽季常規賽資料 https://nba-shot-charts.s3.amazonaws.com/shots-2000.tgz ....................................................... # 2019-2020賽季常規賽資料 https://nba-shot-charts.s3.amazonaws.com/shots-2019.tgz
直接在瀏覽器上訪問地址,下載壓縮包,解壓得到CSV檔案。
果然是2019-2020年NBA常規賽的球員投籃資料。
統統下載下來,這樣就可以直接本地呼叫,不用擔心被牆掉。
注意:光理論是不夠的。這裡順便免費送大家一套2020最新python入門到高階專案實戰視訊教程,可以在我的Python交流圈下載
資料讀取程式碼修改為如下,其實就是pandas讀取。
from shot_chart.core import * # 2019-2020賽季 shots_2019 = make_df('shots-2019.csv')
2020賽季NBA的球隊名單,呼叫函式list_teams。
from shot_chart.core import * # 2019-2020賽季shots_2019 = make_df('shots-2019.csv') # 球隊名單 print(list_teams(shots_2019))
得到結果如下。
可惜了LA Clippers(快船)和Milwaukee(雄鹿)。
兩大奪冠熱門球隊,被掘金和熱火幹翻船了。
今年湖人的奪冠班底,呼叫函式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'))
得到結果如下。
還附帶了出手次數,詹姆斯、戴維斯、庫茲馬、波普、格林排前五。
臥龍鳳雛(格林、波普)得一,可安天下。
昨天發揮爆表,必須給好評~
湖人2020年常規賽全隊的投籃情況,呼叫函式TeamShots。
from shot_chart.core import * # 2019-2020賽季 shots_2019 = make_df('shots-2019.csv') # 湖人隊2019-2020賽季投籃情況 Lakers = TeamShots(shots_2019, "LA Lakers") Lakers.plot_shots()
果然是4行程式碼呀~
左邊的圖綠色表示投籃得分,紅色表示投籃未得分。
右邊的圖橫座標表示距離,縱座標表示次數,綠色表示出手命中次數,橙色表示投籃出手次數。
FG投籃命中率,eFG真實投籃命中率。
真實投籃命中率=全場得分/[2×全場出手次數+0.44×罰球出手次數]
來看一下三旬老漢(老詹)的投籃情況吧。
from shot_chart.core import * # 2019-2020賽季 shots_2019 = make_df('shots-2019.csv') # 勒布朗-詹姆斯2019-2020賽季常規賽投籃視覺化 james = PlayerShots(shots_2019, "LeBron James") james.plot_shots()
可以看出,籃下是詹姆斯的主要得分點。
03年至20年,小皇帝到詹皇的投籃資料視覺化。
from shot_chart.core import * import pandas as pd # 獲取圖表列名 shots_2000 = make_df('shots-2000.csv') columns_list = [column for column in shots_2000] # 新建一個空的dataframe shots_all = pd.DataFrame(columns=columns_list) # 獲取2000-2020常規賽總資料 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常規賽投籃視覺化 james = PlayerShots(shots_all, "LeBron James") james.plot_shots()
發現圖示有點大,可以對core.py檔案修改。
在plt.scatter中新增引數s,設定大小為3。
突然發現詹皇原來也如此全面,三分、籃下、中投,就沒有短板。
24號與23號之間的傳承,曼巴永存。
# 科比00-17常規賽投籃視覺化 Kobe = PlayerShots(shots_all, "Kobe Bryant") Kobe.plot_shots()
24,就是24小時都全力以赴。
再看看今年隨隊奪冠的霍師傅(霍華德)。
# 霍華德04-20常規賽投籃視覺化 howard = PlayerShots(shots_all, "Dwight Howard") howard.plot_shots()
絕大多數都是內線投籃,外線屈指可數。
曾經的快樂獸,單換詹姆斯的存在,後來卻開啟了流浪生涯淪為替補。
最後在湖人浪子回頭,當起了藍領,拿到了屬於自己的總冠軍。
心中有一種莫名的感動,致敬我們的青春!!!
20個CSV檔案點選這裡領取提取碼:1858