• 【数据说第四期】篮球比赛中的投篮选择


    篮球比赛中的投篮选择

    参加过篮球比赛的同学,在球场上是否有这样的经历?
    当上一次投篮未命中时,你会倾向于比上一次更近的距离出手投篮,当上一次投篮稳稳命中时,你会想尝试下比上一次更更远距离的出手。于是,抓取了一些NBA球员的数据,来看看他们在这些情况下,做出怎样的投篮选择?

    1,数据准备

    本次的数据来自于 https://www.basketball-reference.com/,这里有很多有意思的数据,这次主要抓取的是shooting,这里记录球员的所有投篮数据,包括出手位置、出手距离、投篮结果、分值(2/3)等。但是现在网站已有反爬,数据不好抓取。
    在这里插入图片描述
    主要抓取现役常规赛总得分的前十名球员数据。詹姆斯、安东尼、杜兰特、哈登、维斯布鲁克、保罗、库里、阿尔德里奇、德罗赞、霍华德。20w+行数据。
    在这里插入图片描述
    对数据进行处理后,得到数据集
    在这里插入图片描述
    字段说明

    字段描述
    top投篮点纵坐标,背景图片中到球场的上沿距离
    left投篮点横坐标,背景图片中到球场的左侧距离
    game_date比赛时间
    team比赛双方队伍
    shot_result本次投篮结果,Made:命中,Missed:未命中
    points得分,2 分球 or 3分球
    distance投篮点到篮筐距离,单位:ft(英尺)
    player_name球员名称
    pre_shoot_result上一次投篮结果,Made:命中,Missed:未命中
    dist_diff本次投篮点distance 与 上一次投篮点distance 差值,本次distance - 上一次distance,单位:ft(英尺)
    2,数据分析
    # 分离数据集
    after_made = df[df.pre_shoot_result == 'Made']   # 上一次命中
    after_miss = df[df.pre_shoot_result =='Missed']  # 上一次未命中
    
    • 1
    • 2
    • 3
    
    after_made.dist_diff.describe()
    """
    count    90703.000000
    mean         2.764738
    std         12.134524
    min        -36.000000
    25%         -3.000000
    50%          1.000000
    75%         11.000000
    max         39.000000
    Name: dist_diff, dtype: float64
    """
    after_miss.dist_diff.describe()
    """
    count    97785.000000
    mean        -2.521726
    std         12.563584
    min        -39.000000
    25%        -12.000000
    50%         -1.000000
    75%          5.000000
    max         39.000000
    Name: dist_diff, dtype: float64
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    从整体均值看,命中后,会选择更远的距离出手,反之,会选择更近的距离出手。

    print('投失后,下次投篮距离变近比例:{:.2%}'.format(len(after_miss[after_miss.dist_diff < 0])/len(after_miss)))
    print('投失后,下次投篮距离变远比例:{:.2%}'.format(len(after_miss[after_miss.dist_diff >= 0])/len(after_miss)))
    print('命中后,下次投篮距离变近比例:{:.2%}'.format(len(after_made[after_made.dist_diff < 0])/len(after_made)))
    print('命中后,下次投篮距离变远比例:{:.2%}'.format(len(after_made[after_made.dist_diff >= 0])/len(after_made)))
    
    • 1
    • 2
    • 3
    • 4

    投失后,下次投篮距离变近比例:55.03%
    投失后,下次投篮距离变远比例:44.97%
    命中后,下次投篮距离变近比例:34.65%
    命中后,下次投篮距离变远比例:65.35%
    从细分的结果来看,也是得出相同结论:命中后,会选择更远的距离出手,反之,会选择更近的距离出手

    在从距离差值直方图来看,在差值< 0的部分,未命中的累计曲线比命中的累计曲线要陡峭的多,也说明了相同结论。
    在这里插入图片描述在这里插入图片描述
    然而,还可以提出一个新问题,球员投篮命中率会不会受到他们之前是否命中的影响?

    print('投失后,本次投篮命中率:{:.2%}'.format(len(after_miss[after_miss.shoot_result =='Made'])/len(after_miss)))
    print('命中后,本次投篮命中率:{:.2%}'.format(len(after_made[after_made.shoot_result =='Made'])/len(after_made)))
    
    • 1
    • 2

    投失后,本次投篮命中率:48.46%
    命中后,本次投篮命中率:47.28%

    从计算结果,可以得出:球员投篮命中的几率不会受到他们之前是否命中的影响,每次投篮都是独立事件,跳起来投篮就像扔硬币,所谓“火热手感”也并不存在。

    基于这些数据,你还有什么其他分析想法吗?欢迎评论交流!!!

  • 相关阅读:
    基于微信小程序的实验室预约管理系统设计与实现
    springboot+vue企业销售人员培训报名系统java+ssm
    [python][labelme]labelme中默认颜色
    运营-20.产品社区化和内容化
    StatefulSet
    由于找不到vcruntime140_1.dll怎么修复,详细修复步骤分享
    HTML5期末大作业:基于html企业官网项目的设计与实现【艺术官网】
    Google MLOps白皮书:MLOps实践者指南Part I MLOps生命周期及核心能力
    C++:stl:list的常用接口及其模拟实现
    变频器基础原理
  • 原文地址:https://blog.csdn.net/yangjjuan/article/details/127950449