当前位置:首页 > 篮球资讯 > 正文内容

2015-2016赛季NBA赛事比分简单数据分析

杏彩体育2年前 (2023-02-03)篮球资讯55

数据来源:某数据分析QQ群(群友下载于NBA官方网站)

原始数据比较简单,依次包含了比赛日期、比赛开始时间、客队、客队得分、主队、主队得分、个人比赛数据(Box Score)、是否有加时赛、备注等。虽然数据简单,但依然有非常大的分析空间。本文为了实践之前学习的R语言相关内容,只做了一项非常简单的数据分析。

导入数据

数据为CSV文件,直接使用R语言导入CSV文件的方法。

#导入csv数据 setwd("F:/Temporary") NBA_data <- read.table("NBA_data.csv", header = TRUE, sep = ",", colClasses = c("character", "character", "character", "character", "character", "character", "character", "character"), stringsAsFactors = FALSE)

其中,第二个参数header默认为FALSE,即数据框的列名为“V1,V2...”,设置为TRUE时以CSV文件的第一行作为列名。参数sep是分隔数据的分隔符,默认为空格,可以设置为逗号(sep=,),分号(sep=;)和制表符(tab)。参数colClasses 为每一列指定一个类,为了方便处理,先将所有的数据都指定为字符型(character)。由于字符型数据在读入时自动转换为因子,所以参数stringAsFactors=FALSE是为了防止导入的数据进行任何的因子转换。

具体可查阅《R语言实战(第2版)》第二章中“2.3.2 从带分隔符的文本文件导入数据”相关内容。关于如何导入Excel数据可以参考文章【R语言】:导入Excel数据 【R语言】:简单数据处理分析

数据预处理

一、重命名列名

为了方便处理,在导入数据时保留了文件中的第一行作为列名。

首先对原始数据进行初步分析:第一列比赛日期(Date)的列名无需更改;第二列为比赛开始时间,原列名包含有英文缩写ET,推测其为美国东部时间East Time的缩写,决定把列名更改为Start_time;第三列为客场或中立球队,更改为V_team;第四列是客队得分,更改为V_PTS;第五列是主场或中立球队,更改为H_team;第六列是主队得分,更改为H_PTS;第七列是详细的个人比赛数据,应该有内链,但没有抓取到,随后删除;第八列标记了是否进行了加时赛(如果有是OT,没有为空);第九列是备注,全部为空,随后删除。

#重命名列名 names(NBA_data) <- c("Date", "Start_time", "V_team", "V_PTS", "H_team", "H_PTS", "BS", "Overtime", "Notes")

二、删除无效数据和缺失值

1、删除第七列和第九列的无效数据

#删除第七列和第九列 NBA_data <- NBA_data[, c(-7, -9)]

可参考文章:【R语言】:基本数据管理(2)

2、删除观测的缺失值

比赛日期、客队、客队得分、主队、主队得分这五个列向量为空的数据都需要删除。

#删除观测(行)的缺失值,五个列向量为空的数据都需要删除 NBA_data <- NBA_data[!is.na(NBA_data$Date),] NBA_data <- NBA_data[!is.na(NBA_data$V_team),] NBA_data <- NBA_data[!is.na(NBA_data$V_PTS),] NBA_data <- NBA_data[!is.na(NBA_data$H_team),] NBA_data <- NBA_data[!is.na(NBA_data$H_PTS),]

应该能用更简单的代码来实现,但暂时不清楚,以后遇到了再补充更改。

三、处理日期、数据类型转换、数据排序

1、处理日期

比赛日期这一列包含的内容为星期(缩写)+月(缩写)+日(数字)+年(数字),利用函数str_split_fixed()将该列拆分为星期、月日年两列。

#处理日期 library("stringr") datesplit <- str_split_fixed(NBA_data$Date, " ", n=2)

这两列数据在随后数据分析中都有用,将在分析之前再跟实际需求分别赋值到数据框中。

2、数据类型转换

将比赛分数转换为数值格式,以便于之后的相关计算。

#数据类型转换 NBA_data$V_PTS <- as.numeric(NBA_data$V_PTS) NBA_data$H_PTS <- as.numeric(NBA_data$H_PTS)

3、数据排序

此外,原始数据已经按照比赛时间的升序排列,目前暂时不变,之后将根据需要另做排序。

简单数据分析

NBA整个赛季的比赛非常多,整个赛季总共近1300场比赛。可一个赛季下来,一周7天从星期一到星期天,到底联盟更喜欢把比赛安排到哪一天呢?会是周五晚上,还是周六晚上呢?还是其他某天晚上呢?

#另存一个新数据框NBA_days NBA_days <- NBA_data #把datesplit中的第一列“星期几”全部赋值给Date列 NBA_days$Date <- datesplit[, 1]

运行代码后可得

1、统计每天比赛的数量

#周一的比赛数量 NBA_Mon <- NBA_days[NBA_days$Date == "Mon",] Mon_num <- nrow(NBA_Mon) #同理可得周二到周日的比赛数量 NBA_Tue <- NBA_days[NBA_days$Date == "Tue",] Tue_num <- nrow(NBA_Tue) NBA_Wed <- NBA_days[NBA_days$Date == "Wed",] Wed_num <- nrow(NBA_Wed) NBA_Thu <- NBA_days[NBA_days$Date == "Thu",] Thu_num <- nrow(NBA_Thu) NBA_Fri <- NBA_days[NBA_days$Date == "Fri",] Fri_num <- nrow(NBA_Fri) NBA_Sat <- NBA_days[NBA_days$Date == "Sat",] Sat_num <- nrow(NBA_Sat) NBA_Sun <- NBA_days[NBA_days$Date == "Sun",] Sun_num <- nrow(NBA_Sun)

2、新建数据框,包含星期和天数(参考【R语言】:基本数据管理(1)

#新建数据框NBA_week NBA_week <- data.frame(WeekDays = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"), WD_num = c(Mon_num, Tue_num, Wed_num, Thu_num, Fri_num, Sat_num, Sun_num))

3、2015-2016赛季NBA一周每天的比赛数量

#用函数barplot()画柱状图 P1 <- barplot(NBA_week$WD_num, width=1, space=NULL, names.arg = NBA_week$WeekDays, beside=TRUE, col=rainbow(14), col.axis="blue", col.lab="black", col.main="red", main = "2015-2016赛季NBA一周每天比赛数量", xlab="星期", ylab="比赛场次", ylim=c(0,300), axis.lty=1) #函数text()和函数minor.tick()调整文本和坐标轴刻度 text(P1, NBA_week$WD_num, NBA_week$WD_num, col = "black", pos=3) library(Hmisc) minor.tick(ny=5, tick.ratio = 0.5)

其中,关于函数text()和函数minor.tick()的详细用法可参考:【R语言】:图形初阶(3)

4、简单分析

NBA整个2015-2016赛季(包含常规赛和季后赛),在一周内周三晚上的比赛数量最多(竟然不是周末),其次是周五晚上,周一晚上和周六晚上的比赛数量一样多,并列第三。

后记

NBA的各项数据是一个非常大的数据宝藏,今天这个非常简单的数据分析的小例子,仅仅利用非常少量的数据以及非常简单的数据源。

稍微展开,就能想到更多复杂的分析,比如:

所有NBA球队常规赛(季后赛)主场(客场)平均得分(失分);

某支球队常规赛主场平均得分(失分)、客场平均得分(失分),季后赛主场平均得分(失分)、客场平均得分(失分);

某支球队常规赛(全部、主场、客场)的胜率、季后赛(全部、主场、客场)的胜率、包含加时赛(全部、主场、客场)胜率、得分(失分)上百(未上百)的比赛胜率;

某支球队周几的比赛胜率最高、几点开始的比赛胜率最高。

NBA数据几乎拥有无限多可以分析的点以及可以深挖的内容,并且NBA各支球队目前也非常重视各项数据,并且用于指导球队的技战术提升和比赛。

扫描二维码推送至手机访问。

版权声明:本文由财神资讯-领先的体育资讯互动媒体转载发布,如需删除请联系。

本文链接:http://www.tengj.cn/?id=51534

“2015-2016赛季NBA赛事比分简单数据分析” 的相关文章

蔡徐坤打篮球视频被放到教室遭围观,00后哄堂大笑,大白牙抢镜

蔡徐坤打篮球视频被放到教室遭围观,00后哄堂大笑,大白牙抢镜

蔡徐坤打篮球视频被放到教室遭围观,00后哄堂大笑,大白牙抢镜 蔡徐坤很多人都非常的喜欢他,他的粉丝相对来说年龄多少都非常的小,基本上都是00后的人居多,而且蔡徐坤的外形的确非常的帅,从出道以来才去看的外相就一直受到大家的热议,因为长得太过于美,所以没有男子气概,也让很多人...

原创
            难道蔡徐坤打篮球的梗,真的是过不去了吗?蔡徐坤官微霸气硬刚

原创 难道蔡徐坤打篮球的梗,真的是过不去了吗?蔡徐坤官微霸气硬刚

原标题:难道蔡徐坤打篮球的梗,真的是过不去了吗?蔡徐坤官微霸气硬刚 近日,蔡徐坤工作室发出律师函后,相关消息被迅速刷上热搜,看到这样的情况,吃瓜群众一脸懵,这究竟是怎么一回事。难道蔡徐坤打篮球的梗,真的是过不去了吗?而蔡徐坤官微的做法,虽然刚,却引起好感。 前不...

詹姆斯:打篮球比踢足球累多了,曾经踢65分钟足球都没怎么出汗

詹姆斯:打篮球比踢足球累多了,曾经踢65分钟足球都没怎么出汗

篮球和足球一直以来都是世界上最大的两个体育赛事,并且也拥有着全世界体育项目中最多的球迷,如今世界杯正在如火如荼的进行当中,就连很多NBA球员也都在观看这项世界级的赛事,那么打篮球和踢足球对比来看的话,哪一项运动对体能的消耗更大呢?今天记者就这个问题询问了湖人队当家球星勒布朗詹姆斯。...

成都橡胶伸缩接头尺寸标准

成都橡胶伸缩接头尺寸标准

原标题:成都橡胶伸缩接头尺寸标准 成都橡胶伸缩接头橡胶软接头在具体使用过程中,将具有良好的实际密封预期效果比较很好,组装维护也非常方便快捷,使用寿命长,可以避免触摸一些尖锐的金属波纹管设备,避免刺穿球体。符合要求的橡胶软连接具有良好的表面不粘性和透气性;成都橡胶伸缩接头环境安全管...

电竞走进商场!《街头篮球》长泰热力开赛,浦东助力上海建设“全球电竞之都”!

电竞走进商场!《街头篮球》长泰热力开赛,浦东助力上海建设“全球电竞之都”!

作为疫情发生后首批复苏的线下电竞大赛之一,2020《街头篮球》FSPL职业联赛于上周末在长泰广场拉开帷幕。篮球电竞头部赛事落地,这是上海打造“全球电竞之都”的重要一步,将强有力支撑浦东新区电竞产业的发展,进一步形成电竞产业集聚态势。“电竞+商业”的创新尝试《街头篮球》FSPL职业联赛在新区...

17年的缘分《街头篮球》是我唯一不变的生命

17年的缘分《街头篮球》是我唯一不变的生命

相信很多FSer看到此次的征集投稿都会不由自主的有感而发,时光荏苒岁月如梭,FS已经陪伴了我们一起度过了17个年头,17年或许不长也不短,但真的像标题描写的那样,FS这17年承载这我们这一代人的青春故事,依旧会回...