本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
以下文章來源于法納斯特 ,作者小F
前言
NBA剛剛結束,怎樣對球員投籃資料做可視化?
我發現了大佬造的輪子,只需4行代碼就能實作,
在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常規賽的球員投籃資料,
統統下載下來,這樣就可以直接本地呼叫,不用擔心被墻掉,
資料讀取代碼修改為如下,其實就是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'))
得到結果如下,
還附帶了出手次數,詹姆斯、戴維斯、庫茲馬、波普、格林排前五,
臥龍鳳雛(格林、波普)得一,可安天下,
昨天發揮爆表,小F給好評~
湖人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()
絕大多數都是內線投籃,外線屈指可數,
曾經的快樂獸,單換詹姆斯的存在,后來卻開啟了流浪生涯淪為替補,
最后在湖人浪子回頭,當起了藍領,拿到了屬于自己的總冠軍,
心中有一種莫名的感動,致敬我們的青春!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/173129.html
標籤:Python
下一篇:python 從PDF中提取附件
