一起来约G7~R语言探索约基奇数据的简单小例子
掘金又赢了,硬生生把系列赛从3比1打成了3:3,于是大家都来调侃说
我 约基奇(约G7)的名号可不是白叫的!哈哈哈哈
那作为一个喜欢篮球的R语言初学者,当然不能只看比赛了,还要把约基奇的常规数据探索学起来!
数据来源
https://www.statmuse.com/nba/player/nikola-jokic-9226/career-stats
加载可能用到的包
library(xml2)
library(rvest)
library(reshape2)
library(ggplot2)
library(dplyr)
读取数据
打开数据来源的链接,鼠标点击右键检查,将内容复制到文本文件中,我这里命名为new1.txt
page<-read_html("new1.txt")
Jokic<-html_table(page,fill=T)
Jokic[[9]]
list(Jokic)
df1<-Jokic[[9]]
colnames(df1)
首先看一看约基奇5个赛季常规赛的首发出场次数、场均出场时间、场均出手次数、命中率的变化趋势
散点图加折线图
df1_1<-df1[1:5,]%>%
select(Season,GS,MIN,FGA,"FG%")
df1_1
df1_1<-melt(df1_1)
head(df1_1)
ggplot(df1_1,aes(x=Season,y=value,color=variable))+
geom_point(size=5)+
geom_line(aes(group=1))+
facet_wrap(~variable,scales = "free")+
theme_bw()+
theme(legend.position = "none")+
labs(x="",y="")
Rplot.png
从上图我们可以看到约基奇的命中率在17-18赛季最低,最近两个赛季在稳步上升,出手次数在19-20赛季略有下降,但出手次数整体是上升趋势,侧面反映约基奇从一个二轮秀到逐渐成为掘金队进攻核心的过程。场均出场时间17-18赛季达到最大值,恰好也是命中率最低的一个赛季,那我们可以合理猜测一下,要想最大效率的发挥约基奇的作用,应该合理安排他的出场时间。毕竟这桶行走的百岁山体力问题可能是一个较大的困扰。
接下来看一下得分、助攻、篮板、抢断、失误的数据
df1_2<-df1[1:5,]%>%
select(Season,PTS,REB,AST,TOV,BLK)
df1_2<-melt(df1_2)
ggplot(df1_2,aes(x=Season,y=value,color=variable))+
geom_point(size=5)+
geom_line(aes(group=1))+
facet_wrap(~variable,scales = "free",ncol=3,nrow=2)+
theme_bw()+
theme(legend.position = "none",
axis.text.x = element_text(angle=60,vjust=0.5))+
labs(x="",y="")
Rplot01.png
从上图我们可以看到约基奇的得分、篮板、助攻数据在18-19赛季达到最大值,19-20赛季略呈下降趋势。可能的原因有很多,这里我猜可能是休赛季参加世界杯没有得到充足的休息导致的。
我们知道约基奇在场上的作用是组织核心,接下来看看在19-20赛季季后赛中约基奇的得分、助攻与比赛胜负的关系
数据来源是 https://www.basketball-reference.com/players/j/jokicni01/gamelog-playoffs/
df2<-read.csv("new2.txt",header=F,
stringsAsFactors = F)
df2_1<-df2%>%
select(V3,V9,V11,V13,V14,V24,V29)
colnames(df2_1)<-c("Game","w_or_l","MIN","FGA","FG%","AST","PTS")
head(df2_1)
df2_1$w_or_l<-stringr::str_sub(df2_1$w_or_l,1,1)
df2_1$MIN<-stringr::str_sub(df2_1$MIN,1,2)
df2_1$MIN<-as.numeric(df2_1$MIN)
head(df2_1)
df2_1<-melt(df2_1,ids=c("Game",'w_or_l'))
head(df2_1)
ggplot(df2_1,aes(x=Game,y=value,color=w_or_l))+
geom_point(size=5)+
geom_line(aes(group=1))+
facet_grid(variable~.,scales = "free")+
theme_bw()+
theme(
legend.title = element_blank(),
axis.text.x = element_text(angle=60,vjust=0.5))+
labs(x="",y="")
Rplot03.png
比赛的胜负是诸多因素共同作用的结果,单纯从得分、及助攻等数据很难看出对比赛胜负的影响,除非你的队中有一位叫做波普的运动员。
最后看一看约基奇19-20赛季季后赛和常规赛的数据对比
list(Jokic)
df3<-Jokic[[7]]
df3
colnames(df3)[1]<-"Game"
colnames(df3)
df3_1<-df3[1:2,]%>%
select(Game,MPG,PPG,RPG,APG,BPG,TPG,"FG%","3P%","FT%")
df3_2<-melt(df3_1)
df3_2
df3_2$Game<-stringr::str_replace(df3_2$Game,"2019-20 ","")
ggplot(df3_2,aes(x=Game,y=value,fill=Game))+
geom_bar(stat="identity",width=0.5)+
facet_wrap(~variable,scales = "free")+
theme_minimal()+labs(x="",y="")+
theme(legend.position = "top",
legend.title = element_blank())
Rplot04.png
从上图可以看到 场均上场时间(MPG),场均得分(PPG)、场均盖帽(BPG)、三分命中率(3P%)季后赛的表现均高于常规赛。场均助攻数(APG)略少于常规赛,场均失误(TPG)也略多于常规赛。
好了今天的内容就到这里了。祝福约基奇在G7可以带队取得胜利。
- Maven 项目下slf4j 包冲突问题
- 谷歌教你学 AI-第三讲简单易懂的估算器
- 黑产是如何强刷用户银行卡8.1万元的?
- Spring 必知概念(二)
- 利用iText 组件导出PDF
- 利用POI组件导出Excel的简单示例
- MongoDB 整合spring-data-jpa,spring 4.x
- 【微信开发】 红包接口开发
- 【微信开发】 使用单例设计模式 提供AccessToken 和Jsapi_ticket缓存支持
- @ResponseBody响应JSON 406
- tomcat不能运行或共存多个项目
- Spring Task 定时任务
- 如何为机器学习索引,切片,调整 NumPy 数组
- 逆向工程分析:摩托罗拉安全摄像头究竟有多不安全?
- 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 数组属性和方法
- 【小白学PyTorch】7.最新版本torchvision.transforms常用API翻译与讲解
- 【SOT】siameseFC论文和代码解析
- 基于OpenCV创建视频会议虚拟背景
- 【算法】图文并茂,一文了解 8 种常见的数据结构
- 深度了解特征工程
- Nginx应用场景之虚拟主机
- shell tcping 端口,ping网段所有ip端口或tcping指定IP端口
- Redis | 源码阅读 —— 链表
- Python从入门到熟练(4):基础数据类型
- 【MaskTheFace】给人脸图片戴口罩!
- Python从入门到熟练(5): 数据类型进阶
- Python从入门到熟练(6): 流程控制
- Python包:json扩展包demjson使用
- 【论文解读】无需额外数据、Tricks、架构调整,CMU开源首个将ResNet50精度提升至80%+新方法
- 机器学习模型调参指南(附代码)