知行编程网知行编程网  2022-03-15 09:36 知行编程网 隐藏边栏 |   抢沙发  10 
文章评分 0 次,平均分 0.0

菜鸟学Python粉丝的第24篇投稿

阅读本文大概需要5分钟

粉丝独白

篮球巨星科比,是NBA历史上最佳得分手之一,以前写了一篇关于科比的得分数据分析(厉害了!20年【科比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).读入数据集:

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


2).看一下数据集基本情况:一共有25个维度探索大神科比,30000多次投篮数据,有好玩的发现


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

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


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


03

数据清洗和探索


1).数据的清洗

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


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

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

known_data.sample(3)

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


2).数据的思考

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


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


3).画出科比的投篮图

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

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

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

  • 用scatter来画散点图

  • 设置X,Y轴和Title


可视化看一下:

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

4).常用的进攻方式

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

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

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

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


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

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


4).计算命中率

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

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

  • 计算投篮命中率

  • 设置坐标参数和lable

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

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


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

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

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

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

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

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


6).最后一分钟的数据

#选取最后一分钟的数据

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


#平均进攻距离

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


#进攻方式绘制

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


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

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



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


需要完整源码和数据集,请留言获取(仅限前40名,先到先得)。


近期热门:

30岁后还能不能学Python,这里有一碗鸡汤

程序员如何用Python科学炒股

用Python来分析股票|发现炒股软件里惊人内幕

我爬取了微信的粉丝留言数,就为了...

零基础学了8个月的Python,到底有啥感悟


本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享