探索大神科比,30000多次投篮数据,有好玩的发现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了探索大神科比,30000多次投篮数据,有好玩的发现相关的知识,希望对你有一定的参考价值。

粉丝独白

篮球巨星科比,是NBA历史上最佳得分手之一,以前写了一篇关于科比的得分数据分析。这一次,让我们聚焦于进攻方式,用数据来探索科比职业生涯的打球方式,看看如何防守才能最大化阻碍科比的进攻!

技术分享图片


要点:

  • 数据获取

  • 数据的清洗

  • 数据的多维度可视化


01:数据来源

玩数据分析的同学一定都知道kaggle,里面有大量好玩的数据集,这次我们下载了科比近20年职业生涯中所尝试的每个投篮命中的位置和情况,由于是篮球领域的数据,可能有一些小伙伴看不懂,不过没关系,后面我都会进行简短的说明的。

链接:https://www.kaggle.com/c/kobe-bryant-shot-selection/data

The field names are self explanatory and contain the following attributes:

  • action_type 进攻方式(更具体)

  • combined_shot_type 进攻方式

  • game_event_id 这个不清楚

  • game_id 比赛ID

  • lat 投篮点

  • loc_x 投篮点

  • loc_y 投篮点

  • lon 投篮点

  • minutes_remaining 单节剩余时间(分钟)

  • period 表示第几节

  • playoffs 是否是季后赛

  • season 赛季

  • seconds_remaining 剩余时间(秒)

  • shot_distance 投篮距离

  • shot_made_flag 是否进球

  • shot_type 两分球或三分球

  • shot_zone_area 投篮区域

  • shot_zone_basic 投篮区域(更具体)

  • shot_zone_range 投篮范围

  • team_id 球队ID

  • team_name 球队名称

  • game_date 比赛日期

  • matchup 比赛双方

  • opponent 对手

  • shot_id 投篮ID

02:数据的读取和查看

1).读入数据集:

技术分享图片


2).看一下数据集基本情况:一共有25个维度

技术分享图片


3).看一下数据集的大小:一共投了30697次

技术分享图片


可以看到,科比职业生涯出手投篮了三万多次,确实是厉害!大致先了解一下这份数据,主要是收集了科比每一次进攻的位置,投篮方式和得分,这三个维度也是我们重点关注的,其他的其实影响不是太大。

03:数据清洗和探索

1).数据的清洗

因为这是kaggle上的一个比赛数据,会用于预测,所以在“shot_made_flag”这一列上会有空值(即预测科比这一次投篮是否能投进),后面的部分分析会先剔除掉这些空值的数据,所以科密们,如果见到后面一些分析不太合理的话,要考虑到这一点哦!

#剔除未知命中结果的数据

known_data = data[data['shot_made_flag'].notnull()]

known_data.sample(3)

技术分享图片


2).数据的思考

那接下来就慢慢来分析科比的投篮吧。站在一个球迷的位置,我会先关注的是科比的投篮点,有哪一些进攻的方式,哪一种又是偏多呢?

在数据分析前,我先来猜测下,按照我的球迷经验,科比常用的应该是跳投多一些,毕竟江湖上有一句话说,“我科后仰美如画”。科比的投篮姿势也是教科书版的存在,所以会有很多人去模仿他的动作。

3).画出科比的投篮图

技术分享图片


  • 默认的plt画图太丑,我用sns来设置画图的颜色

  • plt来设置中文字体,设置坐标系显示负数

  • 用scatter来画散点图

  • 设置X,Y轴和Title

可视化看一下:

技术分享图片


4).常用的进攻方式

技术分享图片


  • 取数据集中的'combined_shot_type'统计科比投篮的方式

  • 用直方图来显示,构造x和y的参数.(x为1到6的序列,y为每一种投篮方式的统计数)

  • 设置坐标标签和刻度范围

技术分享图片


果然,跳投是最多的,最少的是擦板(嗯,这个让我想起了另外一位巨星——邓肯,他的擦板肯定不少!)这里用到的是“combined_shot_type”这一列,然后我把结果转为中文了,看起来顺眼一点。

4).计算命中率

技术分享图片


  • 过滤数据集,获得投篮命中的次数hits_df

  • 计算投篮命中率

  • 设置坐标参数和lable

技术分享图片


可以看到,扣篮的命中率最高,然后是擦板,带球上篮,勾手,跳投,最后居然是补篮命中率最低(有点难以置信,有可能是数据的缺失的原因,我其实更偏向跳投才是最低的).

5).看看不同区域的出手情况

分析完科比的进攻方式,再来看看他喜欢在哪些地方投篮,终结的效果又是如何。同样,数据集里面对投篮区域的描述也有两列,这里我选取描述更具体的“shot_zone_basic”一列来分析。

技术分享图片


因为y轴的标签名称太长,所以我们把画布右移0.18

技术分享图片


可以看到,科比更多的进攻范围是在中距离,中投多一点。

6).最后一分钟的数据

#选取最后一分钟的数据

last_min_df = known_data[known_data['minutes_remaining']==0]

#平均进攻距离

avg_dis = last_min_df['shot_distance'].mean()

#进攻方式绘制

技术分享图片


技术分享图片


可以看到,还是中距离的跳投居多,还有一些距离看起来很远的,一般都是时间快到点了,然后乱扔出去的,最为球队领袖,还是有很多出手权的。

限于篇幅,我对某些数据探索原文有一些删减,其实这是一份很好可以用来练习的数据集,你可以用来练习pandas数据分析,matplotlib可视化,sklearn数据挖掘,希望大家可以学习和挖掘更多信息。


以上是关于探索大神科比,30000多次投篮数据,有好玩的发现的主要内容,如果未能解决你的问题,请参考以下文章

科比投篮数据可视化小例子

科比,老大1000天

向量使用1:pygame编写篮球游戏-火柴人运球避开防守跳起投篮(向量法处理防守者逼近投篮者前进数据)

向量使用1:pygame编写篮球游戏-火柴人运球避开防守跳起投篮(向量法处理防守者逼近投篮者前进数据)

向量使用1:pygame编写篮球游戏-火柴人运球避开防守跳起投篮(向量法处理防守者逼近投篮者前进数据)

有啥好玩的模拟经营类手机游戏?求大神帮助