【数据分析】23-24赛季NBA常规赛最有价值球员预测

写在前面

本文通过爬取虎扑体育的NBA球员数据,对爬取数据进行处理和可视化展示,进而预测23-24赛季谁最有可能获取NBA常规赛最有价值球员奖项

明确问题

数据分析的第一步,需要提出问题以保证充分理解项目目标和利益相关者的需求。当然在这个项目中,利益相关者是我,我需要更加明确自己的需求。而在实际工作中,利益相关者通常是您的领导和客户。
提出的问题是符合SMART原则的:

  1. 具体的(Specific)
  2. 可衡量的(Measurable)
  3. 面向行动的(Action-oriented)
  4. 相关的(Relevant)
  5. 有明确的截止期限(Time-bound)

以下是我依据SMART原则提出的几个问题和回答:
1、哪些球员指标是在最有价值球员评选中最常参照的?
球员效率值,球队战绩,球员历史荣誉等
2、哪些球员在目前主流体育媒体的最新的MVP预测中排名前列?
约基奇: -125 亚历山大: +300 东契奇: +500 字母哥: +700
数据来源:美媒MVP赔率

数据准备

基于上面的提问环节,我更加明确了项目的目标。球员预测应当在以下球员中展开,约基奇,亚历山大,东契奇,字母哥。并且要关注球员效率值,球队战绩等指标。
现在开始为项目准备我们的数据来源。

什么类型的数据

为计算出球员效率值(简称PER,公式 = [(得分+篮板+助攻+抢断+封盖)-(出手次数-命中次数)-(罚球次数-罚球命中次数)-失误次数]/球员上场比赛的场次),我需要23-24赛季常规赛,约基奇,亚历山大,东契奇,字母哥的每场比赛的单项数据,例如:得分,篮板,助攻,失误等。

数据获取

数据获取通常有以下几个方式,

  1. 内部渠道。如公司文档、数据库。
  2. 外部渠道。如数据公司提供的公共API,爬取网页数据等。

由于缺少内部渠道和没有找到公共的NBA球员数据API,目前只能通过爬取虎扑体育的网页数据的方式来获取我需要的球员数据。

python爬取

通过python的requests库爬取网页数据,并利用BeautifulSoup来解析提取需要的球员数据,最后利用pandas库将数据转换为Excel表格。以下是代码示例:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import re


def getPlayerData(url, name):
    # 发起请求,获取网页内容
    response = requests.get(url)

    # 检查请求是否成功
    if response.status_code == 200:
        # 使用BeautifulSoup解析网页内容
        soup = BeautifulSoup(response.text, 'html.parser')

        # 找到所有和数据相关的链接
        soup_data_all = soup.find_all('a', attrs={'name': name})
        print("所有数据链接:", soup.find_all('a', attrs={'name': name}))

        # 存放球员每场比赛数据的列表,每场比赛包含日期,得分,助攻等数据
        data_list = []

        # 获取日期
        date_list = soup_data_all[0]['categories'].split(",")
        print("日期:", date_list)

        # 发现字符串前后有空格,先处理空格
        date_list = soup_data_all[0]['categories'].strip().split(",")
        print("日期:", date_list)

        data_dict = {}
        # 遍历所有数据链接,打印数据项和每场数据。并将数据存储在字典类型中
        for item in soup_data_all:
            single_data = item['arr'].split(",")
            if len(single_data) > 20:
                data_dict[item.text] = item['arr'].split(",")
                print("数据项:",item.text)
                print("每场数据:", item['arr'])

        print("组装后的数据字典:", data_dict)


        # 将日期和每场比赛数据组合在一起
        for i in range(len(date_list)):
            data = {}
            data["球员"] = name
            data["日期"] = date_list[i]
            for key in data_dict:
                data[key] = float(data_dict[key][i])
            data_list.append(data)

        print("组装后的数据列表:", data_list)
        return data_list
    else:
        print("请求失败,状态码:", response.status_code)
        
all_player_data_list = []
# 获取东契奇球员的数据
player_data_list = getPlayerData('https://nba.hupu.com/players/lukadoncic-150648.html', "卢卡-东契奇")
all_player_data_list.extend(player_data_list)
# 获取亚历山大球员的数据
player_data_list = getPlayerData('https://nba.hupu.com/players/shaigilgeousalexander-150959.html', "谢伊-吉尔杰斯-亚历山大")
all_player_data_list.extend(player_data_list)
# 获取约基奇球员的数据
player_data_list = getPlayerData('https://nba.hupu.com/players/nikolajokic-4943.html', "尼古拉-约基奇")
all_player_data_list.extend(player_data_list)
# 获取阿德托昆博球员的数据
player_data_list = getPlayerData('https://nba.hupu.com/players/giannisantetokounmpo-4802.html', "扬尼斯-阿德托昆博")
all_player_data_list.extend(player_data_list)

# 创建DataFrame
df = pd.DataFrame(all_player_data_list)
#print(df)
# 存表,去除原始索引列(0,1,2...)
df.to_excel('text.xlsx',index=False)

最终我们得到了一个23-24赛季NBA常规赛球员每场数据的Excel表格。
在这里插入图片描述

数据处理

现在我们的表格中已经有了球员每场比赛的基础数据,例如得分、助攻、出手数、命中率等。当然为了得到最终的PER指标,我们还要对数据做进一步的处理。
虽然表格中包含总出手数、命中率数据,但是没有命中次数的数据。我们需要再新添加一列“命中次数”,通过总出手数*命中率/100即可求出,当然计算结果需要四舍五入后保留整数。
在这里插入图片描述现在我们已经拿到了求出PER指标的所有数据,可以计算出每个球员每场比赛的PER指标。
在这里插入图片描述最后,我整合了每个球员的总得分、平均得分等数据,并将排名前列的数据标红以进行更直观的对比。
在这里插入图片描述

分析并做出预测

球员效率值分析

从上图可以分析出以下几点事实:

  1. 目前约基奇的PER指标最高,东契奇紧随其后排名第二,字母哥排名第三,而亚历山大跟前面几位差距较大,仅有33.84
  2. 东契奇的场均得分、场均助攻最高,场均失误最高
  3. 约基奇的总篮板数最高,字母哥的篮板数排名第二

当然离23-24赛季NBA常规赛比赛结束还有1个多月的时间,现在的数据并不一定能在赛季结束也适用。所以我又统计了每个月的球员月均PER数据,以推测球员3、4月的表现情况。
在这里插入图片描述从上图可以发现,东契奇的PER赛季初最高,中期起伏较大但近三个月表现稳定,PER稳定在40左右。约基奇的PER是四位球员中波动最小的且维持在较高水准,可见他的状态是最稳定的。亚历山大的PER数值较其他球员来说有一定的差距,但最近有上升的趋势。字母哥的PER赛季初较低但赛季中期发力提升很快,2月PER在35左右。

球队战绩分析

从球队战绩层面来看,目前约基奇(掘金)、亚历山大(雷霆)、字母哥(雄鹿)的球队战绩都不错,位列联盟前列,分别为41-19,41-18,40-21,而东契奇(独行侠)的球队战绩稍逊一筹为34-26。掘金和雄鹿正在经历5连胜,球队状态火热。

预测

综上两个方面的分析,我认为约基奇获得23-24赛季NBA常规赛最有价值球员奖项的可能性最大。

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值