当前位置: 首页 > news >正文

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

好久不见朋友们,今天给大家分享一个我自己很感兴趣的话题分析——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 linregNBA = 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老将们。


推荐关注的专栏

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

相关文章:

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

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

深入浅出Spring AOP

第1章:引言 大家好,我是小黑,咱们今天要聊的是Java中Spring框架的AOP(面向切面编程)。对于程序员来说,理解AOP对于掌握Spring框架来说是超级关键的。它像是魔法一样,能让咱们在不改变原有代码的…...

火速收藏!2024 新年微信红包封面领取全攻略

2024“龙”重登场!今年有哪些令人期待的红包封面? 前方大批精美红包封面来袭,全新品牌氛围红包封面上线,支持品牌定制特色氛围元素,沉浸感受浓浓年味儿,收获满满惊喜! 新年开好运,微…...

【RabbitMQ】RabbitMQ安装与使用详解以及Spring集成

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《RabbitMQ实战》。🎯🎯 &am…...

企业多云组网怎么办?

在当今数字化时代,企业普遍采用多云策略,同时利用不同云平台的优势以实现成本优化和整体性能提升。根据Futuriom于2022年发布的“安全多云网络调查”报告,80%的受访者表示他们使用来自两个或更多公共云提供商的PaaS或IaaS产品。 多云策略的迅…...

背包问题(贪心) 二维01背包问题 Java

背包问题(贪心) 最优装载问题 题目描述 有n件物品和一个最大承重为w 的背包。第i件物品的重量是weight[i],每件只能用一次,求装入背包的最多物品数量。 题目分析 因为我们只要求装入物品的数量,所以装重的显然没有…...

2019年认证杯SPSSPRO杯数学建模D题(第二阶段)5G时代引发的道路规划革命全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 D题 5G时代引发的道路规划革命 原题再现: 忙着回家或上班的司机们都知道交通堵塞既浪费时间又浪费燃料,甚至有的时候会带来情绪上的巨大影响,引发一系列的交通问题。据报道,每年交通拥堵使得美国…...

可视化k8s页面(Kubepi)

Kubepi是一个简单高效的k8s集群图形化管理工具,方便日常管理K8S集群,高效快速的查询日志定位问题的工具 随便在哪个节点部署,我这里在主节点部署 docker pull kubeoperator/kubepi-server docker run --privileged -itd --restartunless-st…...

1434. 数池塘(四方向)-深度优先搜索-DFS

代码&#xff1a; #include<iostream> using namespace std; char a[200][200]; int fx[4]{0,1,0,-1}; int fy[4]{1,0,-1,0}; int k0; int n,m; void dfs(int x,int y){a[x][y].;int tx,ty;for(int i0;i<4;i){txxfx[i];tyyfy[i];if(tx>1&&tx<n&&am…...

Mysql:重点且常用的操作和理论知识整理 ^_^

目录 1 基础的命令操作 2 DDL 数据库定义语言 2.1 数据库操作 2.2 数据表操作 2.2.1 创建数据表 2.2.2 修改和删除数据表 2.2.3 添加外键 3 DML 数据库操作语言 3.1 插入语句(INSERT) 3.2 修改语句(UPDATE) 3.3 删除语句 3.3.1 DELETE命令 3.3.2 TRUNCATE命令 4 …...

小车辅助脚本编写

小车辅助脚本编写 在远程控制中需要启动非常多的 Launch 文件&#xff0c;在终端启动很麻烦&#xff0c;编写一些脚本可以简化操作 robot_client.sh #!/bin/bashecho "开始执行Bash脚本"# 启动zedm roslaunch zed_wrapper zedm.launch & sleep 5# 启动realsen…...

Modern C++ 一个例子学习条件变量

目录 问题程序 施魔法让BUG浮出水面 条件变量注意事项 修改程序 问题程序 今天无意中看到一篇帖子&#xff0c;关于条件变量的&#xff0c;不过仔细看看发现它并达不到原本的目的。 程序如下&#xff0c;读者可以先想想他的本意&#xff0c;以及有没有问题&#xff1a; #…...

ora-12154无法解析指定的连接标识符

用户反映查询的时候报错ora-12154 这个系统只做历史数据查询使用&#xff0c;使用并不平凡&#xff0c;该数据库曾做过一次服务器间的迁移。 用户描述&#xff0c;所有oracle客户端查询该视图都报tns错误&#xff0c;一般ora-12154会发生在连接数据库时&#xff0c;因为tns配…...

rust跟我学三:文件时间属性获得方法

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎样获得杀毒软件的病毒库时间的。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址…...

解决一个mysql的更新属性长度问题

需求背景&#xff1a; 线上有一个 platform属性&#xff0c;原有长度为 varchar(10)&#xff0c;但是突然需要填入一个11位长度的值&#xff1b;而偏偏这个属性在线上100张表中有50张都存在&#xff0c;并且名字各式各样&#xff0c;庆幸都包含 platform&#xff1b;例如 platf…...

[网络安全]DHCP 部署与安全

一 、DHCP作用 (Dynamic HOst Configure Protocol ) 动态IP配置协议 作用:动态自动分配IP地址 二、DHCP相关概念 地址池/作用域: (IP、子网掩码、网关、DNS、周期) 三、DHCP优点 减少工程量 避免IP避免 提高地址利用率 四、DHCP原理 成为DHCP租约过程 步骤: 1.发送 DHC…...

自建ES集群

常用命令 # 重命名文件夹 mv elasticsearch-7.10.2 elasticsearch# 移动文件到文件夹 mv elasticsearch-7.10.2-linux-x86_64.tar.gz middleware-tar/ mv kibana-7.10.2-linux-x86_64.tar.gz middleware-tar/# 创建data文件夹 mkdir /home/admin/elasticsearch/data 自建Ela…...

git rev-parse v406 ‘v4.0.4‘^{} master什么意思?

git rev-parse 是一个 Git 命令&#xff0c;用于解析出 git 对象&#xff08;如分支、标签、提交等&#xff09;的完整 SHA-1 哈希值。这个命令对于理解 git 中各种引用的内部表示非常有用。 让我们一步步分析 git rev-parse v406 v4.0.4^{} master 这条命令&#xff1a; v406…...

AI 编程的机会和未来:从 Copilot 到 Code Agent

大模型的快速发展带来了 AI 应用的井喷。统计 GPT 使用情况&#xff0c;编程远超其他成为落地最快、使用率最高的场景。如今&#xff0c;大量程序员已经习惯了在 AI 辅助下进行编程。数据显示&#xff0c;GitHub Copilot 将程序员工作效率提升了 55%&#xff0c;一些实验中 AI …...

git push --set-upstream origin master时超时失败的解决方案

问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; git push --set-upstream origin master时&#xff0c;超时失败&#xff0c;显示如下错误&#xff1a; connect to host git.acwing.com port 22: Connection timed out fatal: Could not read from remote …...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...