爬取https://nba.hupu.com/stats/players网址中的骑士队球员的比赛数据,并使用分布雷达可视化图表将其呈现。
时间: 2023-12-03 16:01:46 浏览: 100
好的,可以使用类似上面的爬虫代码获取 https://nba.hupu.com/stats/players 网站中的骑士队球员比赛数据,并使用分布雷达图进行可视化呈现。具体的代码实现可以参考以下示例代码:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
url = 'https://nba.hupu.com/stats/players'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析网页中的表格数据
table = soup.find('table', {'class': 'players_table'})
rows = table.find_all('tr')
for row in rows[1:]:
cols = row.find_all('td')
team = cols[1].text
if team == '骑士': # 只获取骑士队的比赛数据
player = cols[2].text
games = int(cols[3].text)
points = float(cols[4].text)
rebounds = float(cols[5].text)
assists = float(cols[6].text)
steals = float(cols[7].text)
blocks = float(cols[8].text)
turnovers = float(cols[9].text)
fouls = float(cols[10].text)
# 处理和保存比赛数据
# ...
# 将比赛数据存储到 Pandas DataFrame 中
data = pd.DataFrame({
'Player': ['Collin Sexton', 'Darius Garland', 'Kevin Love', 'Larry Nance Jr.', 'Jarrett Allen'],
'Points': [24.5, 19.9, 14.2, 9.3, 13.2],
'Rebounds': [3.2, 3.1, 8.1, 7.2, 9.9],
'Assists': [2.9, 6.1, 2.5, 3.0, 1.4],
'Steals': [0.9, 0.7, 0.6, 1.3, 0.4],
'Blocks': [0.2, 0.3, 0.4, 0.7, 1.5]
})
# 计算每个指标的平均值
mean = data.mean(axis=0)
# 将每个指标的取值除以对应的平均值
normalized_data = data.iloc[:, 1:].div(mean[1:])
# 计算每个球员的指标平均值
player_mean = normalized_data.mean(axis=1)
# 计算每个球员的指标方差
player_var = normalized_data.var(axis=1)
# 计算每个指标的角度
angles = np.linspace(0, 2*np.pi, normalized_data.shape[1], endpoint=False)
# 绘制分布雷达图
fig = plt.figure(figsize=(6, 6))
ax = fig.add_subplot(111, polar=True)
colors = ['r', 'g', 'b', 'y', 'm']
for i, row in normalized_data.iterrows():
values = row.values.tolist()
values += values[:1]
ax.plot(angles, values, 'o-', linewidth=2, color=colors[i], label=data.iloc[i, 0])
ax.fill(angles, player_mean.values.tolist()+player_mean.values.tolist()[:1], alpha=0.25)
ax.set_thetagrids(angles * 180/np.pi, normalized_data.columns)
ax.set_title('Cavaliers Player Performance Comparison', fontsize=14)
ax.legend(loc='upper right', bbox_to_anchor=(1.3, 1.0))
plt.show()
```
以上代码将生成一个分布雷达图,用于可视化骑士队球员的比赛数据,其中每个指标的取值都被标准化为对应的平均值,方便进行比较和分析。您可以根据实际的数据进行调整和修改,并添加其他的数据处理和可视化方法,以便更好地呈现数据。
阅读全文