数据集下载链接:科比投篮数据集
一、数据总体概况
首先将该数据集的类型转化为csv,该数据集总共有25个维度,20000条数据,25个维度如下
action_type 进攻方式(更具体)
combined_shot_type 进攻方式
game_event_id 比赛时间ID
game_id 比赛ID
lat 投篮点
loc_x 投篮点
loc_y 投篮点
lon 投篮点
minutes_remaining 单节剩余时间(分钟)
period 表示第几节
playoffs 是否是季后赛
season 赛季
seconds_remaining 剩余时间(秒)
shot_distance 投篮距离
shot_made_flag 是否进球
shot_type 两分球或三分球
shot_zone_area 投篮区域
shot_zone_basic 投篮区域(更具体)
shot_zone_range 投篮范围
team_id 球队ID
team_name 球队名称
game_date 比赛日期
matchup 比赛双方
opponent 对手
shot_id 投篮ID
浏览一些数据不难发现,数据集内存在一些缺失值。
二、基本数据处理
- 建立工作空间
2、设置工作空间和读取数据
用head()方法查看是否读取成功。
3、查看数据基本情况
该数据总共有25个维度的变量,不难看出原数据中存在空值,使用na.omit方法清理缺失值。
可以看到清理了三千余个存在缺失值的数据。通过进一步的分析发现有两列数据存在问题,playoff这列数据所有值均为0,也就是说在这些数据中没有科比的季后赛数据,season这列数据由于数据类型转换是出现了问题,导致存在近期的时间,
还有team_id和team_name全部都是一样的,也就不对其进行分析。
三、描述性统计分析
1、关于进攻方式
Action_type数据是更具体的投篮方式,有51个分类
由于种类繁多,就对combined_shot_type这个只有六个分类的进攻方式分析,
df1<-data.frame(table(kbdata$combined_shot_type))
df1
library(ggplot2)
ggplot(df1,aes(x=reorder(Var1,Freq),y=Freq))+
geom_col(aes(fill=Var1))+
geom_label(aes(label=Freq))+
theme_bw()
有勾手投篮、补篮、擦板投篮、扣篮、带球上篮、跳投,可以从结果图中看出来,勾手投篮、补篮和擦板投篮是科比很少使用的进攻方式,跳投是他最常用的方式,科比的后仰跳投是被人称为美如画的。
2、关于投篮区域
###############
#投篮区域饼图
tb1<-table(kbdata$shot_zone_area)
lbl<-paste(names(tb1),"\n",tb1,sep = "")
pie(tb1,labels=lbl,col=rainbow(length(tb1)),
main = "投篮区域饼图")
根据投篮区域的第一种表示方法,科比最喜欢在弧顶投篮,左侧跟右侧的投篮次数大致相同,还有一种投篮区域就是在底线以外投篮,这种方式比较困难,不过对于科比这位顶级篮球运动员来说还是比较简单的。
3、关于对手
###############
#面对每个队的出手次数饼图
tb2<-table(kbdata$opponent)
lbl<-paste(names(tb2),"\n",tb2,sep = "")
pie(tb2,labels=lbl,col=rainbow(length(tb2)),
main = "面对每个队的出手次数饼图")
这是科比在面对每个对手的出手次数的饼图,虽然显示比价密集,但是还是可以从中看出,在面对布鲁克林篮网和孟菲斯灰熊队的出手次数均不足一百次。
4、关于得分方式(两分或三分)
###############
#两分球和三分球的出手次数饼图
tb3<-table(kbdata$shot_type)
lbl<-paste(names(tb3),"\n",tb3,sep = "")
pie(tb3,labels=lbl,col=rainbow(length(tb3)),
main = "两分球和三分球的出手次数饼图")
可以从图中看出来,科比三分球投的只有五分之一左右,他的强项是中距离跳投,现在联盟里能够达到三分球和两分球相近的球员也只有库里了。
5、关于面对对手时是否命中
#########################
#科比在每个对面前的出手的命中与不命中的簇状图
ggplot(kbdata,aes(factor(opponent),fill=factor(shot_made_flag)))+geom_bar(position="dodge")
可以从图中看出,科比只有在对阵纽约尼克斯的时候,命中率才稍微超过50%,这可能与对手的防守强度有关,事实上一名篮球运动员也很难保持高命中率,命中率始终保持在40%左右。
#####效果一样——————堆积柱形图
ggplot(kbdata,aes(factor(opponent),fill=factor(shot_made_flag)))+geom_bar()
这个图的效果跟上面的簇状图的效果是一样的,在要对数据进行对比时,还是选择簇状图的对比结果更加明显。
6、关于面对对手的进攻方式
#####每个对手的出手类型
ggplot(kbdata,aes(factor(opponent),fill=factor(combined_shot_type)))+geom_bar()
可以从图中看出来,科比在面对每一支队伍时的进攻方式都包含在了里面。
7、关于投篮位置
#########################
#投篮位置空心点图
plot(kbdata$loc_x,kbdata$loc_y,type = "p",col="red")
进阶图
###########################
#投篮位置分类点图
ggplot(data=kbdata,aes(x=loc_x,y=loc_y))+geom_point(aes(col=factor(combined_shot_type)))
8、关于时间与是否命中
######################3
#投篮距离本节比赛结束的命中与不命中箱线图
ggplot(kbdata,aes(factor(shot_made_flag),minutes_remaining))+geom_boxplot()
可以从图中看出,科比在比赛前几分钟的命中率是比较低的,在比赛中期的手感找回来了命中率有所提高。
9、关于投篮距离与是否命中
############################
#投篮时距离篮筐距离频率分布情况
ggplot(kbdata,aes(shot_distance,fill=factor(shot_made_flag)))+geom_density()
ggplot(kbdata,aes(shot_distance,color=factor(shot_made_flag)))+geom_density()
可以从图中看出来,在距离篮筐较近的位置,命中率非常高,可能是由于扣篮比较容易进球的缘故,在23英尺的位置也就是三分线内测的位置,出手次数显著减少,也是在这个位置附近,命中比不命中要少了许多。
10、节数、投篮距离与是否命中的分组组图
#####################
#每节投篮距离和是否命中的分组组图
ggplot(kbdata,aes(period,shot_distance,color=shot_made_flag))+geom_point()
ggplot(kbdata,aes(period,shot_distance,color=factor(shot_made_flag)))+geom_point()
由于图过小,有很多重叠的部分,但是还是可以看出在远距离投篮方面,科比的命中率比较低,第四节的出手次数也比前三节要少一些。