从数据角度分析年龄与NBA球员赛场表现的关系【数据分析项目分享】

news2024/9/23 7:18:26

好久不见朋友们,今天给大家分享一个我自己很感兴趣的话题分析——NBA球员表现跟年龄关系到底大不大?数据来源于Kaggle,感兴趣的朋友可以点赞评论留言,我会将数据同代码一起发送给你。

目录

  • NBA球员表现的探索性数据分析
    • 导入Python库和加载数据
  • 数据简要概述
  • 数据可视化
  • 年龄与上场时间的比较
  • 年龄与出场次数相比较
  • 年龄与PER相比较
  • 结论

NBA球员表现的探索性数据分析

美国国家篮球协会(NBA)中有各个年龄段的新秀和资深球员。本次数据分析将突出年龄和技能之间的关系,同时研究年龄在球员表现中的因素。

导入Python库和加载数据

首先,加载数据,并按球员名称进行索引,然后查看前5行数据,以了解数据的样式。

import pandas as pd
pd.plotting.register_matplotlib_converters()
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
from sklearn.linear_model import LinearRegression as linreg

NBA = pd.read_csv('./nba.csv',index_col=1)
NBA.head() 


RkPosAgeTmGMPPERTS%3PArFTr...Unnamed: 19OWSDWSWSWS/48Unnamed: 24OBPMDBPMBPMVORP
Player
Alex Abrines\abrinal011SG24OKC7511349.00.5670.7590.158...NaN1.31.02.20.094NaN-0.5-1.7-2.2-0.1
Quincy Acy\acyqu012PF27BRK7013598.20.5250.8000.164...NaN-0.11.11.00.036NaN-2.0-0.2-2.2-0.1
Steven Adams\adamsst013C24OKC76248720.60.6300.0030.402...NaN6.73.09.70.187NaN2.21.13.33.3
Bam Adebayo\adebaba014C20MIA69136815.70.5700.0210.526...NaN2.31.94.20.148NaN-1.61.80.20.8
Arron Afflalo\afflaar015SG32ORL536825.80.5160.4320.160...NaN-0.10.20.10.009NaN-4.1-1.8-5.8-0.7

5 rows × 28 columns

*对于本次分析,我们其实只需要以下几个字段的数据。

  • 球员的年龄, (Age)
  • 出场场次 (G)
  • 出场时间 (MP)
  • 效率值Player Efficiency Rating (PER)
  • 真实命中率 (TS%)

除了球员姓名外,其余列将被删除,并且任何包含缺失数据的列也将被删除。

nba_temp = NBA.loc[:,  ['Age', 'G', 'MP','PER','TS%']]
nba = nba_temp.dropna(axis=0)
nba = nba[~nba.index.duplicated()]
nba.head()
AgeGMPPERTS%
Player
Alex Abrines\abrinal01247511349.00.567
Quincy Acy\acyqu01277013598.20.525
Steven Adams\adamsst012476248720.60.630
Bam Adebayo\adebaba012069136815.70.570
Arron Afflalo\afflaar0132536825.80.516

为了更容易理解,列将被重新命名,以将它们转为非缩写形式。

nba =nba.rename(index=str, columns={'G' : '# Games','MP': 'Minutes Played',
                               'PER': 'Player Efficiency Rate'})

数据简要概述

print(nba.shape)  # 看下数量级
nba.describe()
(537, 5)
Age# GamesMinutes PlayedPlayer Efficiency RateTS%
count537.000000537.000000537.000000537.000000537.000000
mean26.10428348.6052141105.86219712.9517690.531965
std4.17485427.312191855.1955228.7494760.124523
min19.0000001.0000001.000000-41.1000000.000000
25%23.00000021.000000253.0000009.7000000.500000
50%25.00000056.0000001045.00000012.8000000.541000
75%29.00000073.0000001810.00000016.4000000.582000
max41.00000082.0000003026.000000133.8000001.500000
  • 在2017-18赛季,大约有537球员出场打比赛。
  • 根据以往赛季的年龄平均值,预计2017-18赛季的NBA球员平均年龄约为26岁。
  • 有趣的是,联盟中最年长的球员是41岁,比最年轻的球员大22岁!(最大的没记错的话应该是卡特,最小的没啥印象)
  • 平均每位球员在赛季中打了43场比赛,而其真实命中率约为53%

数据可视化

正如之前注意到的,球员年龄范围广泛,但各年龄的分布人数情况又如何呢?

sns.set_style("dark")
plt.figure(figsize=(10,10))
plt.ylabel('# of Players')
sns.histplot(data=nba, x='Age')
plt.show()

在这里插入图片描述

联盟过去和现在都倾向于年轻球员,这是可以预料的。球队通常会寻找年轻的潜力球员,在他们大学期间或之后选择他们。

然而,这个直方图只能提供有限的信息,我们仍然想知道年龄是否真的会影响球员的表现。所以让我们从年龄与参加比赛数量的关系开始看起吧

年龄与上场时间的比较

plt.figure(figsize=(20,10))
plt.ylabel('Minutes Played')
plt.xlabel('Age')
sns.regplot(data=nba, x='Age',y='Minutes Played')
plt.show()

在这里插入图片描述

从上述散点图我们可以得知:

  1. 年龄在19岁至28岁之间的年轻球员比年龄在28岁至41岁之间的老年球员打的比赛更多。
  2. 年轻球员的上场时间范围总体上比老年球员更大。
  3. 总体上,老年球员的上场时间比年轻球员更长。

需要注意的是,这可能不是散点图的最佳线性拟合,然而,该图表大致说明年龄可能不会影响比赛中的上场时间。

年龄较大可能意味着更多的经验,从而在场上停留更长时间,但也有许多年轻的潜力球员比老将球员打得时间更长。

年龄与出场次数相比较

在我们进行年龄与参与游戏次数之间的比较之前,让我们先看一下参与游戏次数与比赛时间之间的关系。

plt.figure(figsize=(20,20))
plt.ylabel('Minutes')
plt.xlabel('Games')
sns.scatterplot(data=nba, x='# Games',y='Minutes Played')
plt.show()

在这里插入图片描述

看起来,如果一个球员在赛季中参加的比赛越多,他们的平均比赛时间也会更长。

在这个基础上,让我们在这个比较中加入年龄。

plt.figure(figsize=(15,10))
plt.ylabel('Minutes')
plt.xlabel('Games')
sns.scatterplot(data=nba, x='# Games',y='Minutes Played', hue='Age')
plt.show()

在这里插入图片描述

关于这个散点图需要注意的一些点:

  1. 这个散点图证实了我们关于年龄与比赛时间之间关系的结论,因为年龄大的和年龄小的人在各种时间段内都有参与比赛的情况。
  2. 年龄较小和较大的范围都分布在整个图中,这表明年龄可能不影响个体参与比赛的次数。

在表现方面,看起来年龄只是一个数字?也许是这样,但我们目前只关注了定量方面的因素,那么比赛中的实际技能呢?

年龄与PER相比较

尽管可能有球员参加更多比赛或比赛时间更长,但这并不能准确地描绘这些个体的表现。因此,我们将根据年龄来评估这些散点图的真实性,考察球员的球员效率评分(PER)。

但是,什么是PER呢?PER简单来讲就是:它允许将篮球运动员的所有成就(得分、盖帽、抢断等)转化为一个单一的数字。PER也是一种每分钟的度量方式,可以比较任意两位选手,而不受比赛场次或比赛时间的限制。这也是为什么我们之前删除了一些列的原因,因为这样可以更简便地比较累积统计数据,如PER,而不需要处理每个个体方面的数据。

有了PER,我们现在可以从新的角度分析年龄对表现的影响。

plt.figure(figsize=(15,10))
sns.regplot(data=nba, x='Minutes Played',y='Player Efficiency Rate')
plt.show() 

在这里插入图片描述

单看平均趋势的话,如果一个球员参与比赛的时间更长,他们的PER很可能比大多数人要高。

那接下来,我们来比较下比赛次数与PER之间的关系。

plt.figure(figsize=(15,10))
sns.regplot(data=nba, x='# Games',y='Player Efficiency Rate')
plt.show() 

在这里插入图片描述

同样的情况,如果一个球员参加的比赛更多,他们的PER很可能更高。

所以到目前为止,一切似乎都符合预期,PER与球员在比赛中的参与程度呈正相关关系。

那现在,让我们开始将年龄与这两个变量进行比较。

plt.figure(figsize=(15,10))
sns.regplot(data=nba, x='Age',y='Player Efficiency Rate')
plt.show() 

在这里插入图片描述

在回归斜率中几乎是一条直线,年龄几乎与PER没有关系。但这意味着什么呢?

这意味着年龄与球员效率评分之间几乎没有明显的关联。年龄对于一个球员的表现并不是决定因素,至少在这个数据集中。其他因素,如技能水平、体能和经验可能更重要。

结论

尽管我们对不少的变量同年龄进行了比较,并使用了不同的绘图方法,但年龄似乎从未对最终结果产生影响。年龄对于篮球运动员来说既不是负面特征,也不是优势。

根据这个分析,还可以得出一些其他的结论:

  • 这些仅仅是一个赛季中少数球员的结果,因此我们不能轻易将此结论推广到NBA的每个赛季。
  • 在NBA中,年龄是相对而言的。年龄范围在很大程度上分为年轻球员和年长球员,但可以重新进行分析,并尝试使用更小的年龄段,可能会得出新的见解。
  • 这个分析纯粹基于可视数据,对于个人表现的每个方面,如领导能力和团队合作,并没有提供深入了解。

总的来说,这个分析我觉得是可以给到我们一个新的视角来了解NBA球员的水平,因为即使年龄不小了,他们也不会让年龄成为阻碍,努力成为最好的球员。

最后,很高兴在kaggle闲逛的时候有幸能看到一个我这么感兴趣的数据集,也仅以此篇,致敬詹库杜,致敬那些现在仍在奋斗着的NBA老将们。


推荐关注的专栏

👨‍👩‍👦‍👦 数据分析:分享数据分析实战项目和常用技能整理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1398011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT与文心一言:AI助手之巅的对决

随着科技的飞速发展,人工智能助手已经渗透到我们的日常生活和工作中。 而在这个充满竞争的领域里,ChatGPT和文心一言无疑是最引人注目的两款产品。它们各自拥有独特的优势,但在智能回复、语言准确性、知识库丰富度等方面却存在差异。那么&am…

【设计模式】责任连模式怎么用?

我将通过一个贴近现实的故事——请假审批流程,带你了解和掌握责任链模式。 什么是责任链模式? 责任链模式是一种行为设计模式,它让你可以避免将请求的发送者与接收者耦合在一起,让多个对象都有处理请求的机会将这个对象连成一条…

RabbitMQ入门篇【图文并茂,超级详细】

🥳🥳Welcome 的Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 🥳🥳Welcome 的Huihuis Code World ! !🥳🥳 前言 1.什么是MQ 2.理解MQ 3.生活…

探秘网络爬虫的基本原理与实例应用

1. 基本原理 网络爬虫是一种用于自动化获取互联网信息的程序,其基本原理包括URL获取、HTTP请求、HTML解析、数据提取和数据存储等步骤。 URL获取: 确定需要访问的目标网页,通过人工指定、站点地图或之前的抓取结果获取URL。 HTTP请求&#…

MySQL中SELECT字句的顺序以及具体使用

目录 1.SELECT字句及其顺序 2.使用方法举例 3.HAVING和WHERE 1.SELECT字句及其顺序 *下表来自于图灵程序设计丛书,数据库系列——《SQL必知必会》 2.使用方法举例 *题目来源于牛客网 题目描述 现在运营想要查看不同大学的用户平均发帖情况,并期望结…

【JavaScript】面向后端快速学习 笔记

文章目录 JS是什么?一、JS导入二、数据类型 变量 运算符三、流程控制四、函数五、对象 与 JSON5.1 对象5.2 JSON5.3 常见对象1. 数组2. Boolean对象3. Date对象4. Math5. Number6. String 六、事件6.1 常用方法1. 鼠标事件2. 键盘事件3. 表单事件 6.2 事件的绑定**1…

深入Docker5:安装nginx部署完整项目

目录 准备 为什么要使用nginx mysql容器构建 1.删除容器 2.创建文件夹 3.上传配置文件 4.命令构建mysql容器 5.进入mysql容器,授予root所有权限 6.在mysql中用命令运行sql文件 7.创建指定数据库shop 8.执行指定的sql文件 nginx安装与部署 1.拉取镜像 2…

/var/run/yum.pid 已被锁定,PID 为 2762 的另一个程序正在运行解决方法

一、问题 /var/run/yum.pid 已被锁定,PID 为 2762 的另一个程序正在运行 二、原因 这个提示意味着在你的Linux系统中,有一个yum(或者dnf,在较新版本的Fedora和RHEL/CentOS 8中)进程正在运行,并且它已经创建…

Vue基知识五

一 vue配置代理 1.1 跨域 JQuery大多数封装的是对DOM的操作,而VUE是要减少对DOM的操作,所以VUE里很少用JQuery,而是用axios发送请求;JQuery与axios都是对xhr进行的封装; 下载并引入axios npm i axios点击按钮请求后…

tx2开发板升级JetPack至最新

最近一个项目用到了tx2, 上面的jetpack太老了需要更新,很久没和开发板打交道了,记录一下。中间没怎么截图,所以可能文字居多。 准备工作 Ubuntu 18.04的机器,避免有坑,不要使用虚拟机,一定要是物理机&…

学习笔记应用——创建用户账户并且拥有自己的信息

一、创建用户账户 将建立一个用户注册和身份验证系统,让用户能够注册账户,进而登录和注销。我们将创建一个新的应用程序,其中包含与处理用户账户相关的所有功能。 创建user 我们首先使用命令 startapp 来创建一个名为 users 的应用程序&…

【无标题】Spring Boot整合MyBatis-Plus,并通过AutoGenerator生成编程喵项目骨架代码**

​ 作为一名 Java 后端开发,日常工作中免不了要生成数据库表对应的持久化对象 PO,操作数据库的接口 DAO,以及 CRUD 的 XML,也就是 mapper。 Mybatis Generator 是 MyBatis 官方提供的一个代码生成工具,完全可以胜任这…

AI学习(2): PyTorch2.x环境安装

1.介绍 注:下面是对PyTorch进行了简单的介绍,不喜欢可直接跳过。 1.1 什么是PyTorch PyTorch是一个由Facebook人工智能研究团队开发的开源机器学习库,用于开发人工智能和深度学习的应用程序。PyTorch支持广泛的机器学习和深度学习算法,并基于…

鸿蒙开发系列教程(五)--ArkTS语言:组件开发

1、基础组件 组件API文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/84_u58f0_u660e_u5f0f_u5f00_u53d1_u8303_u5f0f_uff09-0000001427744776-V2 查看组件API 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 容…

gdip-yolo项目解读:gdip模块 |mdgip模块 |GDIP regularizer模块的使用分析

gdip-yolo是2022年提出了一个端到端的图像自适应目标检测框架,其论文中的效果展示了良好的图像增强效果。其提出了gdip模块 |mdgip模块 |GDIP regularizer模块等模块,并表明这是效果提升的关键。为此对gdip-yolo的项目进行深入分析。 gdip-yolo的论文可以…

Linux网络命令

一、网络配置命令 查看linux基础的网络设置: 网关:route -nIP地址:ifconfig ip aDNS服务器:cat /etc/resolv.conf主机名:hostname路由:route -n网络连接状态:ss 或 netstat域名解析nslookup ho…

【ARMv8M Cortex-M33 系列 7.2 -- HardFault 问题定位 1】

请阅读【嵌入式开发学习必备专栏 之 ARM Cortex-Mx专栏】 文章目录 问题背景堆栈对齐要求Cortex-M33 的 FPU 功能 问题背景 rt-thread 在PendSV_Handler退出的时候发生了HardFault_Handler是什么原因?且 LR 的值为0xfffffffd 堆栈对齐要求 在 ARM Cortex-M 架构中…

【已解决】Qt Creator设计模式被禁用不能点的原因及解决方案

Qt Creator 下载地址(含历史版本):https://download.qt.io/official_releases/qtcreator/ 症状 Qt Creator 目前最新版为12.0.1,安装后打开.qml文件发现设计工具图标为禁用状态。 原因及解决方案 根据官网材料(Qt C…

air001研究笔记.基于arduino快速开发简单项目

一、air001芯片简介 air001是厂商合宙推出的一款tssop封装的mcu芯片。支持swd与串口烧录,多面向简单的功能简单类别的电子产品,因为官方文档齐全上手简易,所以也特别适合非专业爱好者乃至于幼儿编程。芯片内置资源:AIR001芯片数据…

蓝桥杯-最少刷题数

📑前言 本文主要是【算法】——最少刷题数的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句&#x…