NBA球员数据简单探索分析(simple NBA EDA)

又在kaggle上找到了一个有趣的NBA数据分析的案例,原文基于python实现,而且代码不是很长,非常好的学习素材,但是在重复原文身高分布直方图的过程中遇到了一些问题,暂时还没有找到原因,下面记录的是自己用R语言实现的过程

(学英语学英语 Exploratory Data Analysis EDA 探索性数据分析)

数据集可直接在kaggle下载Simple NBA EDA | Kaggle,数据集包含3922位球员,8个变量,分别是:X序号,Player(姓名),height(身高cm),weight(体重kg),collage(大学),born(出生的年份),birth_city(出生的城市),birth_state(出生的州)

#查看当前所在路径

getwd()

#更改到数据集所在路径

setwd("../Python_practice/a_kind_of/kaggle_pratice/")

#读入数据

players<-read.csv("Players.csv")

#查看数据维度

dim(players)

#数据集的列名

colnames(players)

#删除缺失数据所在的行

players<-na.omit(players)

函数is.na()可以用来检测是否存在缺失值,比如

y<-c(1,2,3,NA)

is.na(y)

返回的结果为c(FALSE,FALSE,FALSE,TRUE)

用which()函数输出那个一个位置是TRUE,比如

which(is.na(y))

返回结果为 4

函数complete.cases()可用来识别矩阵或者数据框中没有缺失值的行,如果每行都包含完整的数据则返回TRUE;如果每行有一个或者多个缺失数据则返回FALSE。函数na.omit()可以删除所含缺失数据所在的行。

接下来用以身高为横坐标,体重为纵坐标画一幅简单的散点图,添加中位数辅助线,并分别为身高最高和最矮,体重最重和最轻添加数据标签。

p1<-ggplot(players,aes(x=height,y=weight))+geom_point(col="blue")+

  geom_vline(xintercept=median(players$height),linetype="dashed")+

  geom_hline(yintercept=median(players$weight),linetype="dashed")+

  theme_bw()+

  labs(title="NBA Players Height&Weight",x="Height(cm)",y="Weight(Kg)")

添加数据标签

X<-c(which(players$height==min(players$height)),

    which(players$height==max(players$height)),

    which(players$weight==min(players$weight)),

    which(players$weight==max(players$weight)))

df<-players[X,]

#使用ggrepel添加数据标签

library(ggrepel)

p2<-p1+

  geom_point(data=df,aes(x=df$height,y=df$weight),color="red")+

  geom_text_repel(data=df,aes(label=df$Player))

由上图我们可以看出最矮的球员是小虫博格斯,最轻,最重,最高的球员这几个名字还真没有听过。。。

NBA球员身高体重分布直方图

p3<-ggplot(players,aes(height))+

  geom_histogram(binwidth=5,fill="blue")+

  geom_vline(xintercept=mean(players$height),linetype="dashed")+

  theme_bw()+labs(x="Height in Cm",y="")+

  scale_y_continuous(expand=c(0,0))+

  geom_point(aes(x=200,y=800),col="white")

p3

p4<-ggplot(players,aes(weight))+

  geom_histogram(binwidth=5,fill="green")+

  geom_vline(xintercept=mean(players$weight),linetype="dashed")+

  theme_bw()+labs(x="Weight in kg",y="")+

  scale_y_continuous(expand=c(0,0))+

  geom_point(aes(x=100,y=750),col="white")

p4

library(ggtree)

multiplot(p3,p4,ncol=2)

PS:柱状图如何根据高低排序暂时们还没有找到解决办法!

collages giving maximum players(向NBA输送最多球员的大学)

df_1<-table(players$collage)

df_1<-as.data.frame(df_1)

df_2<-df_1[which(df_1$Freq>40),]

df_2

ggplot(df_2,aes(x=Var1,y=Freq))+geom_col(fill="blue")+

  theme(axis.text.x=element_text(angle=45,vjust=1,hjust=1))+

  ylab("")+xlab("")+

  geom_text(aes(label=Freq),vjust=-0.5)

杜克大学,加州大学洛杉矶分校(UCLA),北卡,堪萨斯,肯塔基等等都是响当当的篮球名校,接下来还探索了球员出生地所在的州的分布情况,内容和统计球员所在的大学差不多,内容就不再重复。


补充:

之前有一个问题是怎样让柱状图画的时候从大到小排序,找到一篇教程How to plot factors in a specified order in ggplot

代码:

set.seed(357)#设置随机数种子,保证每次随机生成的数据一致

x<-data.frame(name=as.factor(sample(letters,10)),val=runif(10))#生成数据集,sample()是取样函数,runif()生成均匀分布的随机数

library(ggplot2) #加载

ggplot(x,aes(x=name,y=val))+geom_bar(stat="identity")+theme_bw()

直接画结果是这样的

如果想要从小到大的顺序的话

x$name<-factor(x$name,level=x$name[order(x$val)]))

ggplot(x,aes(x=name,y=val))+geom_bar(stat="identity")+theme_bw()

结果就变成这样似的

另一种方法reorder()

ggplot(x,aes(x=reorder(name,val),y=val))+geom_bar(stat="identity")+theme_bar()

效果和上面一样,如果想要从大到小排序该怎么做呢???第一种level的方法应该可以实现,用reorder()不知道该怎么做,又出现一个问题,另外geom_bar()函数里的stat参数到底是干什么用的呀???

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 不是我说,但我确实挺矫情的吧,low?普通?我要写字了,呵呵。怕你了,真的不怕,别怕,放下,你自己去找一下看一看吧...
    Jun阿宽清清清阅读 149评论 0 0
  • 每到夜晚,就会变得格外多愁善感。虽然对我来说很晚了,可还是有很多话想说完再睡。 最近一直生病。休息了十多天,感冒也...
    一枚小猴子阅读 138评论 0 0
  • 好事者来迟了 空心的瓶子里装满了红月和晚秋 骑士带着空瓶子 嬉水 淡泊在这里 世事无常 骑士到老才搞得清自己的性别...
    留子尧阅读 239评论 6 11
  • 01 本计划学车的暑假,因为太热,还是想挪到平时或者寒假。而又不可能在家闲着,比较倾向的是辅导班上课的工作,四处面...
    一只飘飘阅读 4,388评论 59 64