绝杀总是能让人激动不已!在NBA历史上,留下了不少的经典绝杀!我们的闪电侠韦德也是个中佼佼者,其中 2009 年对阵公牛一役完成抢断三分绝杀就是一大例证,绝杀之后韦德跑到站台上更是霸气的喊到「This is my house」。
当年的热火给我们的青春带来了太多的回忆,虽然曾经的队友,早已成为了彼此的对手。就像当年一起通宵的死党,如今都已变成陌生人,都在为现实奔波。
而就在昨天 12 月 11 日美国当地时间 10 日晚,NBA 常规赛湖人主场迎战热火队,这也是詹姆斯和韦德生涯最后一次常规赛对决。这场比赛就像多年以后老朋友再次相见,有太多不舍的回忆。赛后詹姆斯和韦德生互相交换了球衣,这个场景不知戳中多少球迷的心。
今天就带大家用 Python 分析韦德职业生涯的数据,多年以后或许还可以拿出这篇文章给自己的孩子诉说这自己的青春。
数据获取
数据的来源主要是爬 basketball-reference 网站上的数据。
网站地址:
https://www.basketball-reference.com/players/w/wadedw01.html
网站把韦德所有的生涯数据都展示出来,结构也很清晰我们只要用 requests + pyquery 解析就好。
最后我们把解析到的数据利用 pandas 保存到 excel 中即可。
具体的爬虫代码如下:
from pyquery import PyQuery as pq
from fake_useragent import UserAgent
import requests
import pandas as pd
def parse_html():
url = “https://www.basketball-reference.com/players/w/wadedw01.html”
ua = UserAgent()
headers = {“User-Agent”: ua.random}
reponse = requests.get(url, headers=headers)
if reponse.status_code == 200:
html = reponse.text
extract_htm(html)
def extract_htm(html):
doc = pq(html)
Dwyane_Wade_data = []
data_items = doc.find(“#div_per_game #per_game tbody tr”).items()
for itme in data_items:
season = itme.find(“th[data-stat=‘season’] a”).text()
age = itme.find(“td[data-stat=‘age’]”).text()
team = itme.find(“td[data-stat=‘team_id’] a”).text()
league = itme.find(“td[data-stat=‘lg_id’] a”).text()
position = itme.find(“td[data-stat=‘pos’]”).text()
games = itme.find(“td[data-stat=‘g’]”).text()
games_started = itme.find(“td[data-stat=‘gs’]”).text()
minutes_played_per_game = itme.find(“td[data-stat=‘mp_per_g’]”).text()
field_goals_per_game = itme.find(“td[data-stat=‘mp_per_g’]”).text()
field_goals_attempts_per_game = itme.find(“td[data-stat=‘fga_per_g’]”).text()
field_goal_percentage = itme.find(“td[data-stat=‘fg_pct’]”).text()
point_3_field_goal_per_game = itme.find(“td[data-stat=‘fg3_per_g’]”).text()
point_3_field_goal_percentage = itme.find(“td[data-stat=‘fg3_pct’]”).text()
point_2_filed_goals_per_game = itme.find(“td[data-stat=‘fg2_per_g’]”).text()
point_2_filed_goals_attempts_per_game = itme.find(“td[data-stat=‘fg2a_per_g’]”).text()
fg2_pct = itme.find(“td[data-stat=‘fg2_pct’]”).text()
efg_pct = itme.find(“td[data-stat=‘efg_pct’]”).text()
ft_per_g = itme.find(“td[data-stat=‘ft_per_g’]”).text()
fta_per_g = itme.find(“td[data-stat=‘fta_per_g’]”).text()
ft_pct = itme.find(“td[data-stat=‘ft_pct’]”).text()
orb_per_g = itme.find(“td[data-stat=‘orb_per_g’]”).text()
drb_per_g = itme.find(“td[data-stat=‘drb_per_g’]”).text()
trb_per_g = itme.find(“td[data-stat=‘trb_per_g’]”).text()
ast_per_g = itme.find(“td[data-stat=‘ast_per_g’]”).text()
stl_per_g = itme.find(“td[data-stat=‘stl_per_g’]”).text()
blk_per_g = itme.find(“td[data-stat=‘blk_per_g’]”).text()
tov_per_g = itme.find(“td[data-stat=‘tov_per_g’]”).text()
pf_per_g = itme.find(“td[data-stat=‘pf_per_g’]”).text()
pts_per_g = itme.find(“td[data-stat=‘pts_per_g’]”).text()
item_data = {‘season’: season, “age”: age, “team”: team, “league”: league, “position”: position, “games”: games,
“games_started”: games_started, “minutes_played_per_game”: minutes_played_per_game, “field_goals_per_game”: field_goals_per_game,
“field_goals_attempts_per_game”: field_goals_attempts_per_game, “field_goal_percentage”: field_goal_percentage,
“point_3_field_goal_per_game”: point_3_field_goal_per_game, “point_3_field_goal_percentage”: point_3_field_goal_percentage,
“point_2_filed_goals_per_game”: point_2_filed_goals_per_game, “point_2_filed_goals_attempts_per_game”: point_2_filed_goals_attempts_per_game,
“fg2_pct”: fg2_pct, “efg_pct”: efg_pct, “ft_per_g”: ft_per_g, “fta_per_g”: fta_per_g, “ft_pct”: ft_pct,
“orb_per_g”: orb_per_g, “drb_per_g”: drb_per_g, “trb_per_g”: trb_per_g, “ast_per_g”: ast_per_g, “stl_per_g”: stl_per_g,
“blk_per_g”: blk_per_g, “tov_per_g”: tov_per_g, “pf_per_g”: pf_per_g, “pts_per_g”: pts_per_g}
print(item_data)
Dwyane_Wade_data.append(item_data)
data = pd.DataFrame(Dwyane_Wade_data)
data.to_csv(“Dwyane_Wade_data.csv”, encoding=‘utf_8_sig’)
if __name__ == ‘__main__’:
parse_html()
最后保存的 excel 表如下:
出场次数和首发数据分析
首先我们对韦德生涯参加的场数和时间进行一个分析。
games:参与的比赛场数(都为82场)
games_start: 先发次数
age:年龄
minutes_played: 平均每场比赛进行的时间
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!