摘要:近日各隊(duì)紛紛發(fā)布季前賽賽程,迎接新賽季。實(shí)際上,數(shù)據(jù)分析團(tuán)隊(duì)對(duì)于現(xiàn)在的球隊(duì)已經(jīng)算是標(biāo)配了,無(wú)論是在球員選擇還是戰(zhàn)術(shù)制定上都起著重要的作用。于是,我們就借助官方數(shù)據(jù)和的繪圖函數(shù),來(lái)看一看不同的球員都是在什么位置出手投籃的。比如林書(shū)豪就是。
作者 | Crossin先生
導(dǎo)讀:NBA 2018-19 賽季已經(jīng)落下帷幕,猛龍擊敗勇士,成為新科冠軍球隊(duì)。近日各隊(duì)紛紛發(fā)布2019-20季前賽賽程,迎接新賽季。
我想,不如來(lái)做個(gè) NBA 相關(guān)的數(shù)據(jù)分析案例好了。實(shí)際上,數(shù)據(jù)分析團(tuán)隊(duì)對(duì)于現(xiàn)在的 NBA 球隊(duì)已經(jīng)算是標(biāo)配了,無(wú)論是在球員選擇還是戰(zhàn)術(shù)制定上都起著重要的作用。當(dāng)下整個(gè)聯(lián)盟越來(lái)越盛行的“魔球化”打法,其實(shí)也正是基于數(shù)據(jù)分析的產(chǎn)物。
于是,我們就借助官方數(shù)據(jù)和 Python 的繪圖函數(shù),來(lái)看一看不同的球員都是在什么位置出手投籃的。
01 視頻版本
這篇數(shù)據(jù)分析案例,我做了個(gè)視頻版本,對(duì)代碼做了解讀,講了運(yùn)行的注意事項(xiàng)和一些有的沒(méi)的,供需。對(duì)于視頻制作還不是很有經(jīng)驗(yàn),多包涵。(視頻里有彩蛋)
本文在案例的代碼寫(xiě)完后,我把它發(fā)在了虎撲上。結(jié)果,被推薦上了首頁(yè),25萬(wàn)多次瀏覽,近800回復(fù)……感謝各位JRs賞臉!
原圖、更多球員生成的結(jié)果及完整代碼,見(jiàn)以下網(wǎng)址:
NBA出手點(diǎn)統(tǒng)計(jì)代碼:
https://gitee.com/crossin/sni...
幾十位球星生成圖:
提取碼: jbpw
02 效果展示
照例先看結(jié)果,每個(gè)點(diǎn)是一次投籃,藍(lán)色點(diǎn)是投中,紅色點(diǎn)是未中。挑幾個(gè)有特點(diǎn)的:
1. 哈登
魔球得很明顯了,長(zhǎng)兩分這種低效率的事絕對(duì)不干
2. 西蒙斯
古典中鋒
3. 德拉贊
中投小王子
4. 字母哥
籃下都給你扣糊了!
5. 庫(kù)里
這個(gè)得放全場(chǎng)……
6. 科比
生涯累計(jì)圖,全方位無(wú)死角,包括籃板后負(fù)角度
下面來(lái)看具體步驟,我們以剛剛獲得本賽季冠軍戒指的林書(shū)豪作為例子。
03 獲取數(shù)據(jù)
NBA 有一個(gè)官方統(tǒng)計(jì)網(wǎng)站:stats.nba.com,上面有各種數(shù)據(jù),可以說(shuō)是一個(gè)寶藏了。
從網(wǎng)頁(yè)上,我沒(méi)有找到這次所需的數(shù)據(jù)。但通過(guò)一番搜索,我找到了網(wǎng)站的開(kāi)放接口 API。相關(guān)的接口和文檔你可以從這個(gè)項(xiàng)目里查看:
nba_py - stats.nba.com API for python
https://github.com/seemethere...
通過(guò)以下接口,我們可以獲取某個(gè)球員在指定賽季的投籃詳細(xì)數(shù)據(jù):
https://stats.nba.com/stats/s...
其中參數(shù) PlayerID是查詢球員的 ID,這個(gè) ID 可以通過(guò)在網(wǎng)頁(yè)上搜索球員姓名,從對(duì)應(yīng)的 URL 中獲取。比如林書(shū)豪就是 202391。
https://stats.nba.com/player/...
鏈接中的兩處 2018-19是賽季參數(shù),你可以改成其他賽季,不過(guò)我試過(guò)不能太早,大約 96 年往前就沒(méi)數(shù)據(jù)了,而且早期數(shù)據(jù)精度要差些。
其他參數(shù)可以不用管。
用 requests庫(kù)可輕松獲取結(jié)果(需加上 headers):
response = requests.get(url, headers=headers,timeout=5)
04 解析數(shù)據(jù)
返回的數(shù)據(jù)是 JSON格式,用 pandas 轉(zhuǎn)成 DataFrame 格式,方便后續(xù)處理:
data = response.json()# 獲取列名即每項(xiàng)投球數(shù)據(jù)的意思headers = data"resultSets"["headers"]# 獲取投球的相關(guān)數(shù)據(jù)shots = data"resultSets"["rowSet"]# 轉(zhuǎn) DataFrameshot_df = pd.DataFrame(shots, columns=headers)
我們關(guān)心的數(shù)據(jù)就是 LOC_X、LOC_Y(出手位置)和 SHOT_MADE_FLAG(是否投中)這三列。
05 繪制投籃點(diǎn)
使用 matplotlib庫(kù)的散點(diǎn)圖繪制 scatter 方法就可以把投籃點(diǎn)畫(huà)出來(lái),這個(gè)我們之前的各種案例里也用過(guò)不少次了:
made = shot_df[shot_df["SHOT_MADE_FLAG"]==1]miss = shot_df[shot_df["SHOT_MADE_FLAG"]==0]plt.scatter(miss.LOC_X, miss.LOC_Y, color="r", marker=".", alpha=0.3)plt.scatter(made.LOC_X, made.LOC_Y, color="b", marker=".", alpha=0.3)
我們通過(guò)參數(shù)設(shè)定點(diǎn)的大小和透明度,讓顯示更清楚。
06 繪制球場(chǎng)
投籃點(diǎn)畫(huà)出來(lái)了,不過(guò)只是這樣不夠直觀。我們?cè)賮?lái)加個(gè)球場(chǎng)的圖。
這個(gè)是通過(guò) matplotlib里的 Circle、Rectangle、Arc 等方法拼出來(lái)的,沒(méi)啥特別的技術(shù),但代碼比較繁瑣,這邊就不貼了。(只要你愿意,甚至可以用它畫(huà)出小豬佩奇)
07 添加頭像
最后,再給數(shù)據(jù)圖加上一個(gè)頭像,讓它看起來(lái)更完整。頭像地址:
https://stats.nba.com/media/p...://ak-static.cms.nba.com/wp-content/uploads/headshots/nba/latest/260x190/202391.png
文件名依然是球員的 ID,但這個(gè)地址并不是對(duì)所有球員有效,可做下異常處理。
pic = urllib.request.urlretrieve("http://stats.nba.com/media/players/230x185/202391.png")# imread 讀取的圖像可以被 matplotlib 繪制head_pic = plt.imread(pic[0])# 將球員圖片放置于右上角,并設(shè)置縮小等級(jí)以配合整個(gè)圖片img = OffsetImage(head_pic, zoom=0.6)# (x, y) 控制將球員放在你想要放的位置img.set_offset((540,640))# 添加球員圖片fig.gca().add_artist(img)
如果在你的電腦上位置不對(duì),記得修改下 offset的值(不同系統(tǒng),甚至不同編譯器都可能存在差異)。
最終效果:
獲取更多精彩內(nèi)容和專業(yè)幫助,可前往:CDA數(shù)據(jù)分析研究院-12年數(shù)據(jù)科學(xué)教育品牌-引領(lǐng)人工智能新視界
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45187.html
摘要:如果在元素內(nèi)點(diǎn)擊文本,就會(huì)觸發(fā),瀏覽器會(huì)自動(dòng)將焦點(diǎn)轉(zhuǎn)到和標(biāo)簽相關(guān)的表單控件上。在用戶使用具體某種方式加入付費(fèi)會(huì)員時(shí),須閱讀并確認(rèn)相關(guān)的用戶協(xié)議和使用方法。在之前,主要提供兩種元素來(lái)進(jìn)行多媒體的展示,一個(gè)是標(biāo)簽,另一個(gè)是標(biāo)簽。 HTML Hyper Text Markup Language,超文本標(biāo)記語(yǔ)言,不是一種編程語(yǔ)言,而是一種標(biāo)記語(yǔ)言 思想:網(wǎng)頁(yè)中有很多數(shù)據(jù),不同的數(shù)據(jù)可能需要不同...
摘要:本文意在創(chuàng)建一個(gè)得分圖,該圖同時(shí)描繪了從場(chǎng)上不同位置投籃得分的百分比和投籃次數(shù),這和個(gè)人網(wǎng)站上的帖子類似。接下來(lái),我們需要繪制一個(gè)包含得分圖的籃球場(chǎng)圖。球員照片會(huì)出現(xiàn)在得分圖的右下角。的解決辦法是將命中率與聯(lián)賽平均分關(guān)聯(lián)。 本文意在創(chuàng)建一個(gè)得分圖,該圖同時(shí)描繪了從場(chǎng)上不同位置投籃得分的百分比和投籃次數(shù),這和 Austin Clemen 個(gè)人網(wǎng)站上的帖子 http://www.austi...
摘要:在本文中,我們將以的決策樹(shù)和隨機(jī)森林預(yù)測(cè)獲勝者。用決策樹(shù)和隨機(jī)森林預(yù)測(cè)獲勝者導(dǎo)入數(shù)據(jù)集并解析日期導(dǎo)入熊貓作為。這將幫助我們查看決策樹(shù)分類器的預(yù)測(cè)是否正確?;煜仃囷@示了我們決策樹(shù)的正確和不正確的分類。 showImg(https://segmentfault.com/img/bVbcr26?w=750&h=383); 在本文中,我們將以Scikit-learn的決策樹(shù)和隨機(jī)森林預(yù)測(cè)NB...
摘要:可預(yù)見(jiàn)的未來(lái)激情賽事已經(jīng)過(guò)半,阿里云視頻技術(shù)在本次世界杯中也成功落地,而這并不是結(jié)局,這是將視頻應(yīng)用于體育行業(yè)以及更多其他行業(yè)的開(kāi)端。 本屆世界杯互聯(lián)網(wǎng)直播的順利進(jìn)行,離不開(kāi)各大云計(jì)算廠商的支持。在這其中,阿里云是當(dāng)之無(wú)愧的C位,除了優(yōu)酷外,阿里云還支撐了CNTV、CCTV5客戶端,為全網(wǎng)70%的世界杯直播流量保駕護(hù)航。 對(duì)于世界杯這種超大觀看量級(jí)、超強(qiáng)影響力的重要體育賽事,阿里云一直...
閱讀 788·2023-04-25 17:54
閱讀 3007·2021-11-18 10:02
閱讀 1161·2021-09-28 09:35
閱讀 688·2021-09-22 15:18
閱讀 2889·2021-09-03 10:49
閱讀 3085·2021-08-10 09:42
閱讀 2605·2019-08-29 16:24
閱讀 1281·2019-08-29 15:08