科比职业生涯数据分析报告


一、前言

在本次数据分析是利用Jupyter对科比职业生涯的数据集进行分析,通过对相关数据的分析,掌握Numpy, Pandas, Matplotlib, Seaborn等常用数据分析库的用法,掌握常规的数据预处理的方法以及特征工程。

二、数据集说明

该数据集收录了自96赛季~2016赛季,共有30697条生涯数据。每条数据都是一次出手,其中包括动作类型,投篮类型,投射距离,投射位置,是否命中等25个特征。在该数据集中我们将对以这30697条数据进行数据处理与分析。部分数据如下:

三、数据预处理

导入需要使用到的相关库,numpy,pandas,matplotlib,pylab等

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pylab import *

导入数据集,展示前三行数据并统计每一列数据的个数

kobe = pd.read_csv('data.csv')
kobe.head(3)    #显示前3行数据
kobe.describe()



通过对数据集的列举,我们可以清除的看到在shot_made_flag这一列中,总数为25697,这说明在这些数据存在空值,而这一值是是否命中,对数据分析的结果有重要的影响,所以我们需要对这些空值进行处理。

kobe = kobe[pd.notnull(kobe['shot_made_flag'])]
kobe.describe()


我们对空数据删除,得到剩下的有用数据,最终得到25697个有用数据,这也是之后分析用到的数据。

四、数据分析

1、每个赛季出手次数
首先我们对科比在每个赛季出手的次数做一个统计,并以出手次数的多少排列,我们对season(赛季)这一栏进行统计,查看season一共有多少组数据,即多少个赛季,之后将各个赛季出手次数统计并用柱状图绘制出来。

print(kobe['season'].unique())
fig = plt.figure(figsize=(20, 6.5))  #绘图函数
fig.set(alpha=0.2)# 设置图表颜色的alpha参数
kobe.season.value_counts().plot(kind = 'bar')
plt.xlabel("赛季")
plt.ylabel("出手次数")
plt.title("每个赛季的出手次数")
plt.show()


柱状图以赛季为x轴,命中的次数为y轴绘制,从图中可以看出,在Jun-05这一赛季中,科比出手的次数最多,在2013-14这一赛季出手最少,从整体来看,在每个赛季中科比出手的次数都是非常多的,这可以说明科比是球队里的主战力之一。

2、赛季命中率

分析完每一赛季出手次数之后,再对赛季命中率做一个统计,选择赛季与是否命中这两个属性,对科比的赛季命中率做统计,并以赛季为x轴,命中率为y轴做折线图展示。

# 职业生涯各赛季命中率
season = kobe.pivot_table(index='season', values='shot_made_flag', aggfunc='mean')
fig, ax = plt.subplots()
for label in ax.xaxis.get_ticklabels():label.set_rotation(90)
plt.plot(season.index, season.values)
plt.title('科比职业生涯各赛季命中率示意图')
plt.xlabel('赛季')
plt.ylabel('命中率')

3、每一节命中率

 选取period节数统计科比在各节中的的命中率,用来看看科比在那节的命中率最高。
# 职业生涯各赛季各节命中率
p_1 = kobe[kobe['period'] == 1].pivot_table(index='season', values='shot_made_flag', aggfunc='mean')  # 第一节
p_2 = kobe[kobe['period'] == 2].pivot_table(index='season', values='shot_made_flag', aggfunc='mean')  # 第二节
p_3 = kobe[kobe['period'] == 3].pivot_table(index='season', values='shot_made_flag', aggfunc='mean')  # 第三节
p_4 = kobe[kobe['period'] == 4].pivot_table(index='season', values='shot_made_flag', aggfunc='mean')  # 第四节
fig, ax = plt.subplots()
plt.plot(p_1)
plt.plot(p_2)
plt.plot(p_3)
plt.plot(p_4)
for label in ax.xaxis.get_ticklabels():
label.set_rotation(90)
plt.title('科比职业生涯各节命中率示意图')
plt.legend(('第一节', '第二节', '第三节', '第四节'), loc='best')
plt.xlabel('赛季')
plt.ylabel('命中率')


从示意图可以看出科比在第四节的命中率最低,这也可以说明体力对科比投篮命中率有很大的影响。

4、投篮位置
在对科比投篮命中率做出统计后,我们再来看科比投篮的位置。

#科比投篮位置
plt.figure(figsize=(10,20))
jumpshot = kobe[kobe['combined_shot_type']=='Jump Shot']
layup = kobe[kobe['combined_shot_type']=='Layup']
dunk = kobe[kobe['combined_shot_type']=='Dunk']
tipshot = kobe[kobe['combined_shot_type']=='Tip Shot']
hookshot = kobe[kobe['combined_shot_type']=='Hook Shot']
bankshot = kobe[kobe['combined_shot_type']=='Bank Shot']
plt.scatter(jumpshot.loc_x, jumpshot.loc_y, color='grey')
plt.scatter(layup.loc_x, layup.loc_y, color='red')
plt.scatter(dunk.loc_x, dunk.loc_y, color='yellow' )
plt.scatter(tipshot.loc_x, tipshot.loc_y, color='green')
plt.scatter(hookshot.loc_x, hookshot.loc_y, color='black')
plt.scatter(bankshot.loc_x, bankshot.loc_y, color='blue')
label=['跳投','上篮','扣篮','补篮','勾手','擦板']
plt.legend(label,loc=7)
plt.title('投篮位置')

我们选取combined_shot_type属性中各个出手方式,有跳投、上篮、扣篮、补篮、勾手、擦板,不同的出手方式以不同的颜色通过散点图的方式将出手位置在图上绘制出来,得到以下散点图。

从图中可以看出篮球场大致的外观,其中红黄绿聚集的地方是球框底下,这里适合上篮、扣篮和补篮,再看灰色点(跳投),灰色点之间存在一条明显的分界线,而这条分界线就是三分线,科比出手的位置可以说是遍布整个球场,这也说明科比出手最多的方式是跳投。

5、进攻方式与命中率

接着对科比的进攻方式与出手命中率,做统计,将每次出手的方式combined_shot_type统计出来,绘制一个饼图,再对每次出手方式不同出手是否命中做一个饼图,观察进攻进攻方式与命中率。

#科比进攻的方式
plt.figure(figsize=(15, 5))
plt.subplot(121)
attack_method = kobe['combined_shot_type'].value_counts()
plt.pie(attack_method, labels=['跳投', '上篮', '扣篮', '补篮','勾手','擦板'], autopct='%1.2f%%')
plt.title('科比进攻方式')
plt.legend(loc= 1)
#科比投篮命中率
plt.subplot(122)
shooting = kobe[kobe['shot_made_flag']==1]['combined_shot_type'].value_counts()
list1 = attack_method.tolist()
list2 = shooting.tolist()
list3 = attack_method.tolist()
for i in range(len(list1)):
list3[i] = list2[i]/list1[i]
hits_df = pd.Series(list3);
plt.pie(hits_df, labels=['跳投', '上篮', '扣篮', '补篮','勾手','擦板'])
plt.title('科比各种投篮方式命中率')
plt.show()


从左边进攻方式饼图可以看出科比跳投的次数最多,占了76.70%,最少是擦板,这也和投篮位置散点图对应上了,从右边命中率中可以看到扣篮的命中率是最高的,而跳投的命中率最低,这是符合实际情况的,因为跳投次数是最多且出手位置也是最多的,不同的出手位置也对命中率有一定的影响,这种情况是非常正常的。

6、各区域投篮次数

统计shot_zone_basic不同出手区域的出手次数,以出手区域为纵坐标,投篮次数为横坐标绘制条形图。

#科比在各个位置投篮的次数
area = kobe['shot_zone_basic'].value_counts()
b = np.array([0,1,2,3,4,5,6])
plt.barh(b,area,align ='center')
plt.yticks(b,('中距离','进攻有理区','底线之外的三分','除进攻有理区外的禁区','右边底线三分','左边底线三分','后场'))
plt.xlabel('次数',fontsize=10)
plt.title('科比在各区域投篮次数',fontsize=20)
plt.tight_layout()# 紧凑显示图片,居中显示
plt.show()


从图中可以看到,科比大多数在中距离出手,三分也投了挺多,根据科比的出手习惯,可以说明科比不管三分还是两分,都是非常的自信的。

7、其他因素对出手的影响

下面是对其他因素对科比出手投篮的影响。下面三个属性是投篮的位置、距离、范围,其实这三个属性可以看作一个属性,都是代表投球位置的。这里将三个属性都按具体位置的类别绘制散点图

import matplotlib.cm as cm
plt.figure(figsize=(20,10))
def scatter_plot_by_category(feat):
alpha = 0.1
gs = kobe.groupby(feat)
cs = cm.rainbow(np.linspace(0, 1, len(gs)))
for g, c in zip(gs, cs):
plt.scatter(g[1].loc_x, g[1].loc_y, color=c, alpha=alpha)
plt.subplot(131)
scatter_plot_by_category('shot_zone_area')
plt.title('投篮位置')
plt.subplot(132)
scatter_plot_by_category('shot_zone_basic')
plt.title('投篮距离')
plt.subplot(133)
scatter_plot_by_category('shot_zone_range')
plt.title('投篮范围')


第一个图是shot_zone_area属性的,图中红色和橙色是右侧投球区,墨绿色和绿色是左侧投球区,蓝色是中间投球区;第二个图是shot_zone_basic属性的,图中橙色是篮板底下、蓝色是除进攻有理区外的禁区,墨绿色是中距离,紫色是底线之外的三分,红色是右边底线三分,绿色是左边底线三分;第三个图是shot_zone_range属性的,图中红色是除进攻有理区外的禁区,绿色是进攻有理区,紫色是中距离,蓝色是三分线外。这三个图都是对科比投球位置的一个统计。

五、总结

通过本次对科比职业生涯数据的分析,我们可以看到科比在他的职业生涯里为球队的贡献是非常大的,他那“凌晨四点半的洛杉矶”更是科比为了比赛训练的曼巴精神更是每一位篮球爱好者所追求的精神,曼巴精神永存!!!r.i.p

科比职业生涯数据分析相关推荐

  1. 人工智能课程实训方案

    第一章 发展背景 当今,世界无时无刻不在发生着变化.对于技术领域而言,普遍存在的一个巨大变化就是为大数据(Big data)打开了大门.随着国家大数据战略推进实施以及配套政策的贯彻落实,大数据产业发展 ...

  2. AI教学实训整体解决方案

    第一章 发展背景 当今,世界无时无刻不在发生着变化.对于技术领域而言,普遍存在的一个巨大变化就是为大数据(Big data)打开了大门.随着国家大数据战略推进实施以及配套政策的贯彻落实,大数据产业发展 ...

  3. 高校人工智能专业实训建设方案

    第一章 发展背景 当今,世界无时无刻不在发生着变化.对于技术领域而言,普遍存在的一个巨大变化就是为大数据(Big data)打开了大门.随着国家大数据战略推进实施以及配套政策的贯彻落实,大数据产业发展 ...

  4. 33643分!曼巴精神永不熄,数据回顾科比20年职业生涯辉煌

    又是一年8月23日,这是你离开后的第二个生日,也是你的43岁生日. 图片来源于网络 从上学到工作,直到现在还经常在看你过往的比赛视频,为你的高难度进球发出一句,我去牛X啊,之后陷入短暂的沉默,其实到现 ...

  5. 30万行数据,Python 分析科比二十年职业生涯 | 原力计划

    作者 | 高羊羊羊羊羊杨 来源 | CSDN博客 头图 | 付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 前段时间,湖人当家球星 科比·布莱恩特不幸遇难.这对于无数的球迷来说无疑使 ...

  6. python 数据分析day4 Pandas 之 DataFrame

    DataFrame 一. 创建DataFrame 1. 二维数组创建 2. 字典创建 3. JSON创建 4. 读取Excel或CSV文件创建 5. 读数据库(MySQL)创建 二. 常用属性 三. ...

  7. 致敬科比,我们应该这样做......

    2016年4月14日,科比·布莱恩特,这个最接近神的男人,在洛杉矶斯台普斯中心,结束了他的最后一场比赛.上场42分钟,出手50次,看下60分,帮助球队以101-96比分取得胜利. 这是一场万众瞩目的比 ...

  8. 科比自传读后感 --曼巴精神

    骑士李四记录 科比·比恩·布莱恩特(Kobe Bean Bryant)是我非常喜欢的一名NBA球员,除了他精湛的球技,他的曼巴精神,其实还因为他长得帅,哈哈. 科比,我崇拜的偶像,你于2020年1月2 ...

  9. 《我是科比》—科比在湖人成长记录

    科比无视所谓非议,全身遍体鳞伤,依然兀自前行.在卫冕的道路上,科比低调出征,却渐入佳境,他从来不会给自己找借口.因为受过伤的人,特别容易懂得珍惜. 以下,便是科比的故事,从青涩走向成熟,从曲折步入沉稳 ...

  10. Nike如何利用邮件营销助力科比退役赛事?

    近日你被科比刷屏了么?那,应该也被耐克刷屏了吧?伴随科比职业生涯落幕的,除了眼泪与不舍构成的情怀,还有大量借势科比退役的营销. 比如,一个月前,赞助品牌耐克就开始了一系列致敬活动,并把4 月14 日定 ...

最新文章

  1. 解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?
  2. AIX如何查看文件系统分布在哪个物理磁盘上
  3. python2.6更改为Python2.7
  4. lvs keepalived 安装配置详解【转】
  5. DataList的e.Item.ItemType == ListItemType.Item判断问题
  6. Python Django Cookie的设置和获取相关属性
  7. RHEL6.0使用centos的YUM更新源
  8. 计算机二级web题目(4)--CSS基础
  9. OC 内存管理黄金法则
  10. conda常用命令和基础知识整理
  11. 微服务可观测性研究之distributed tracing--1.综述
  12. 如何在html定位一张图片,css图片怎么定位?
  13. 课堂笔记(3) 假设检验 Hypothesis testing
  14. Android开机启动流程
  15. Silverlight 2学习教程(四):Chiron.exe:Silverlight 2打包和动态语言部署工具
  16. MyBatis Plus 看这篇就够了,一发便入魂!
  17. 华为HarmonyOS系统搭载了POKERTIME129263和AOMAHA的汉印智能打印新升级
  18. 尾部相关性尾部风险价圣分
  19. packet tracer 下载及简介
  20. cad中能够既刷新视图又能刷新计算机图形数据库,建筑CAD练习题.doc

热门文章

  1. android imageview 获取bitmap缩放大小,android – Imageview缩放方法“centercrop”作为代码...
  2. eclipse汉化教程,保姆级教学,解决下载缓慢、安装不上等问题,随时中英互换,官网汉化包
  3. 如何删除Eclipse中的中文包,让中文Eclipse显示英文
  4. Delphi10.2下载和安装详解教程(很全的教程)
  5. 集成电路模拟版图入门-版图基础学习笔记(一)
  6. matlab基于视频的车流量检测,基于视频的车流量统计——matlab代码.docx
  7. python3.7 获取网络时间
  8. windows 驱动实现进程枚举
  9. CentOS7 安装 oracle 10g
  10. 《高性能mysql》之MySQL高级特性(第七章)