看篮球学R语言:卢卡东契奇到底有多棒?
时间:2022-07-24
本文章向大家介绍看篮球学R语言:卢卡东契奇到底有多棒?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
很早之前在kaggle看到了这个案例
How good is Luka Doncic?
https://www.kaggle.com/xvivancos/how-good-is-luka-doncic
主要内容是使用R语言分析探索了东契奇15到18年在欧洲打球的数据和18-19NBA菜鸟赛季的数据。
这次我们把数据换成东契奇两个NBA常规赛的数据,按照这篇kaggle文章的思路来探索一下东契奇加入NBA后在数据层面的变化。
首先是东契奇菜鸟赛季的数据和其他一众高手的菜鸟数据对比
这一众高手都有谁呢?
首先是得分数据对比
Rookiestats<-read.csv("Rookie season stats.csv")
Rookiestats
colnames(Rookiestats)[c(2, 12, 13, 14, 15, 16, 17, 18, 19, 22)] <- c("Rookie Season", "FG%", "3P", "3PA",
"3P%", "2P", "2PA", "2P%", "eFG%", "FT%")
Rookiestats
library(ggplot2)
library(tidyquant)
col<-matrix(palette_dark())[,1][1:7]
ggplot(data=Rookiestats, aes(x=reorder(Player, -PTS), y=PTS)) +
geom_bar(aes(fill=Player), stat="identity", color="black", show.legend=FALSE) +
geom_label(aes(label=PTS)) +
scale_fill_manual(values=col) +
labs(title="NBA Rookie stats comparisons",
subtitle="How many points did they score in their first season?",
x="Player", y="Points Per Game") +
theme(panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.background=element_blank(),
axis.line=element_line(colour="black"),
axis.title.x=element_blank()) +
ylim(0, 40)
library(magick)
library(grid)
image <- image_read("jordan.jpg")
grid.raster(image, x=0.143, y=0.77, height=0.2)
image <- image_read("doncic.jpg")
grid.raster(image, x=0.27, y=0.64, height=0.2)
image <- image_read("james.jpg")
grid.raster(image, x=0.4, y=0.64, height=0.2)
image <- image_read("durant.jpg")
grid.raster(image, x=0.53, y=0.64, height=0.2)
image <- image_read("curry.jpg")
grid.raster(image, x=0.655, y=0.58, height=0.2)
image <- image_read("harden.jpg")
grid.raster(image, x=0.785, y=0.42, height=0.2)
image <- image_read("bryant.jpg")
grid.raster(image, x=0.915, y=0.38, height=0.2)
image.png
东契奇的菜鸟赛季场均得分在这些人中排名第二,仅次于乔老爷子,比詹姆斯还高0.2分。
接下来看场均篮板数
ggplot(data=Rookiestats, aes(x=reorder(Player, -TRB), y=TRB)) +
geom_bar(aes(fill=Player), stat="identity", color="black", show.legend=FALSE) +
geom_label(aes(label=TRB)) +
scale_fill_manual(values=col)+
labs(title="NBA Rookie stats comparisons",
subtitle="How many rebounds did they get in their first season?",
x="Player", y="Rebounds Per Game") +
theme(panel.grid.major=element_blank(), panel.grid.minor=element_blank(),
panel.background=element_blank(), axis.line=element_line(colour="black"),
axis.title.x=element_blank()) +
ylim(0, 15)
image <- image_read("doncic.jpg")
grid.raster(image, x=0.143, y=0.61, height=0.2)
image <- image_read("jordan.jpg")
grid.raster(image, x=0.27, y=0.57, height=0.2)
image <- image_read("james.jpg")
grid.raster(image, x=0.4, y=0.52, height=0.2)
image <- image_read("curry.jpg")
grid.raster(image, x=0.53, y=0.47, height=0.2)
image <- image_read("durant.jpg")
grid.raster(image, x=0.655, y=0.46, height=0.2)
image <- image_read("harden.jpg")
grid.raster(image, x=0.785, y=0.39, height=0.2)
image <- image_read("bryant.jpg")
grid.raster(image, x=0.915, y=0.33, height=0.2)
Rplot01.png
场均7.6个篮板排名第一
接下来是场均助攻数
ggplot(data=Rookiestats, aes(x=reorder(Player, -AST), y=AST)) +
geom_bar(aes(fill=Player), stat="identity", color="black", show.legend=FALSE) +
geom_label(aes(label=AST)) +
scale_fill_manual(values=col) +
labs(title="NBA Rookie stats comparisons",
subtitle="How many assists did they make in their first season?",
x="Player", y="Assists Per Game") +
theme(panel.grid.major=element_blank(), panel.grid.minor=element_blank(),
panel.background=element_blank(), axis.line=element_line(colour="black"),
axis.title.x=element_blank()) +
ylim(0, 9)
image <- image_read("james.jpg")
grid.raster(image, x=0.15, y=0.72, height=0.2)
image <- image_read("doncic.jpg")
grid.raster(image, x=0.27, y=0.72, height=0.2)
image <- image_read("jordan.jpg")
grid.raster(image, x=0.4, y=0.72, height=0.2)
image <- image_read("curry.jpg")
grid.raster(image, x=0.53, y=0.72, height=0.2)
image <- image_read("durant.jpg")
grid.raster(image, x=0.655, y=0.44, height=0.2)
image <- image_read("harden.jpg")
grid.raster(image, x=0.785, y=0.39, height=0.2)
image <- image_read("bryant.jpg")
grid.raster(image, x=0.915, y=0.34, height=0.2)
场均5.9个助攻,和詹姆斯。乔老爷子、库里并列第一。
你说作为一个新秀,某一项数据可以和这些名人堂级别的球员来比比也就算了,你竟然这三个最基本的统计数据全都名列前茅,还有地方说理去不?
接下来看看东契奇两个赛季一些统计数据的变化
首先是各项命中率
nbaTwoSeason<-read.csv("18191920.csv")
nbaTwoSeason
nbaTwoSeason1<-nbaTwoSeason[,c(-2,-3,-4,-5)
fd<-nbaTwoSeason1[,c(1,7,10,13,14,17)]
colnames(fd)<-str_replace_all(colnames(fd),'X','')
colnames(fd)<-str_replace_all(colnames(fd),'\.','%')
colnames(fd)
library(reshape2)
fd<-melt(fd)
fd
ggplot(fd,aes(x=Season,y=value,group=variable))+
geom_line()+
geom_point(size=5,color="red")+
facet_wrap(~variable,nrow=1)+
labs(x="",y="")+
theme_bw()+
theme(axis.text.x = element_text(angle=60,vjust=0.5))
从上图我们可以看到,除了三分命中率下降之外,整体投篮命中率和罚球命中率都在提升。
p2<-ggplot(df2,aes(x=Season,y=value,group=variable))+
geom_line()+
geom_point(size=5,color="red")+
facet_wrap(~variable,nrow=2)+
labs(x="",y="")+
theme_bw()+
theme(axis.text.x = element_text(angle=60,vjust=0.5))
p2
df3<-nbaTwoSeason1[,c(1,2,20:26)]
df4<-df3[,3:9]/df3$G
df4$Season<-df3$Season
df4
df4<-melt(df4)
p3<-ggplot(df4,aes(x=Season,y=value,group=variable))+
geom_line()+
geom_point(size=5,color="red")+
facet_wrap(~variable,nrow=2)+
labs(x="",y="")+
theme_bw()+
theme(axis.text.x = element_text(angle=60,vjust=0.5))
ggpubr::ggarrange(p2,p3,ncol=2,nrow=1,widths = c(1,4))
Rplot04.png
从上图我们可以看出19-20赛季东契奇的出场次数少了很多,可能是因为他受到了伤病影响。但是场均出场时间确实上升的。此外,防守端的数据19-20赛季相对于菜鸟赛季是下降的,比如抢断和盖帽,但是进攻端的数据是稳步上升的。
整个赛季所有比赛得分篮板助攻的变化
df<-read.csv("nwe.csv",stringsAsFactors = F)
head(df)
dim(df)
df1<-df%>%
select(c("Date","PTS","AST","TRB"))
head(df1)
df2<-df1[-c(26:29,48:54,57,61,73),]
df2$PTS<-as.numeric(df2$PTS)
df2$AST<-as.numeric(df2$AST)
df2$TRB<-as.numeric(df2$TRB)
dim(df2)
df3<-melt(df2)
df3
ggplot(df3,aes(x=Date, y=value, color=variable, group=variable)) +
geom_line(show.legend=FALSE) +
geom_point(show.legend=FALSE) +
facet_grid(variable ~ ., scales="free") +
geom_rect(aes(xmin=0, xmax=54.5, ymin=-Inf, ymax=Inf),
fill="darkseagreen1", alpha=0.01, show.legend=FALSE) +
geom_rect(aes(xmin=54.5, xmax=61.5, ymin=-Inf, ymax=Inf),
fill="sandybrown", alpha=0.01, show.legend=FALSE) +
theme_bw() +
theme(axis.text.x=element_text(angle=90, vjust=0.5,size=5),
axis.title.x=element_blank(),
axis.title.y=element_blank()) +
labs(title="Luka Doncic stats - (2019-20)",
subtitle="得分, 助攻 , 篮板
复赛前 复赛后")
image.png
好了今天就到这了,期待明天的比赛东契奇能够再次展示他的无限可能!
- http线程池的设计与实现(c++)
- iOS崩溃堆栈符号化,定位问题分分钟搞定!
- Duang~ Android堆栈慘遭毁容?精神哥揭露毁容真相!
- Java学习笔记第一篇:坦克大战游戏
- 腾讯Bugly Unity3D Plugin使用指南
- 远丰集团旗下CMS疑有官方后门
- 前端黑魔法之远程控制地址栏
- 信息收集利器:ZoomEye
- go sync.Mutex 设计思想与演化过程 --转
- 漏洞预警 | Ubuntu 16.04版本存在本地提权漏洞(附EXP)
- 通过“震网三代”和Siemens PLC 0day漏洞,实现对工控系统的入侵实验
- 安卓端渗透工具DVHMA:自带漏洞的混合模式APP
- 小萝莉说Crash(二): Unrecognized selector xxx 之 ForwardInvocation
- 5分钟教程:如何通过UART获得root权限
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 多媒体程序开发
- 本地 IDE 已废!编辑器大结局!GitHub 的云 VSCode 实测
- 实战 | Python 编写端口扫描器
- 我这几年踩过的十个坑,每一条都是血泪教训
- 在 Python 中如何快速创建一个只读字典?
- 现场打脸:如何使用Selenium批量上传文件?
- 一日一技:FastAPI如何关闭接口文档?
- 什么叫做类比,为什么有些 Python 入门教程结构不合理?
- 贼好用的 Java 工具类库,墙裂推荐!
- 万字长文,Thread 类源码解析!
- lintCode 31 题解
- JDK1.8HashMap源码学习-put操作以及扩容(二)
- Python 中的数字到底是什么?
- 详解 Python 的二元算术运算,为什么说减法只是语法糖?
- 详解增强算术赋值:“-=”操作是怎么实现的?