所以,我使用这段代码的目的是提取我的NFL团队中一名新秀的信息。我想将他的表现与上赛季排名前十的球员进行比较,他们在第一个赛季踢了10多场比赛
为此,我引用了《走向数据科学》中的一篇文章,其中他们解释了如何获取NFL数据
这是我的密码:
#url page
url_mac = 'https://www.pro-football-reference.com/years/2021/passing.htm'
#opening URL with BS
html_mac = urlopen(url_mac)
stats_macpage = BeautifulSoup(html_mac)
#collecting table rows
column_headers = stats_macpage.findAll('tr')[0]
column_headers = [i.getText() for i in column_headers.findAll('th')]
#getting stats of each row
rows = stats_macpage.findAll('tr')[1:]
qb_stats = []
for i in range(len(rows)):
qb_stats.append([col.getText() for col in rows[i].findAll('td')])
#creating a data frame
data = pd.DataFrame(qb_stats, columns = column_headers[1:])
#rename column of sack yards from yards to y_sack
new_columns = data.columns.values
new_columns[-6] = 'y_sack'
data.columns = new_columns
#selecting specifics stats
categories = ['Cmp%', 'Yds', 'TD', 'Int', 'Y/A', 'Rate']
#first filter
data_radar = data[['Player', 'Tm'] + categories]
#selecting specific player
data_mac = data_radar[data_radar['Player'] == 'Mac Jones']
我为所有11个我想要数据的玩家做了这件事,我在决赛中连接了,但是你可以想象我的代码看起来有多糟糕
如何改进它以创建循环?我已经尝试过一些东西,但对于所有这些想法,要么效果不好,要么超出了我的能力,无法成功执行
在我的想法之间,我收集了过去20年的所有数据,并尝试逐年查找,但这看起来有点不必要,因为我已经知道我想要的年份。我的问题具体在这一部分,因为在决赛中,我可以创建一个列表,然后创建一个“如果”,并且只取列表中每个玩家的第一年>;10场比赛
url_mac = 'https://www.pro-football-reference.com/years/2021/passing.htm'
谢谢大家
要将2011-2021年的所有表加载到一个数据帧,可以使用以下示例:
印刷品:
并保存
data.csv
(LibreOffice的屏幕截图):使用
pandas
解析这些表。只需在url中循环浏览季节(不要忘记将其添加到数据框中,否则您将不知道哪些行是针对哪些季节的:相关问题 更多 >
编程相关推荐