R爬虫&可视化第五季-图解欧洲足球五大联赛

640?wx_fmt=gif

作者:徐麟,数据分析师,就职于上海唯品会。热爱数据挖掘和分析,喜欢用R、Python玩点不一样的数据。个人公众号:数据森麟(微信ID:shujusenlin) 



前言:

R爬虫&可视化系列文章来到了第五季,我们来聊聊欧洲足球五大联赛。本人作为一个不会踢球的资深球迷,俗称“懂球帝”,今天就与大家用数据分析一下2017-2018赛季欧洲五大联赛的各项指标。


数据爬取:

本次数据爬取我们选择的是虎扑网站,虎扑网站作为大型的体育类资讯网站,可以作为足球类数据的来源。爬取分为两部分,球员资料和比赛统计,比较好的一点是虎扑网站上的数据是以表格形式进行存储,如下图所示:

640?wx_fmt=jpeg

640?wx_fmt=jpeg

上图中由于虎扑球队信息更新不是特别及时,我们会在后期把这部分数据和比赛数据做inner join。循环爬取表格的方法基本上是相似的,下面只展示其中一场比赛的数据爬取,球员基本信息爬取与其类似:


 
 
  1. i=10854899 ##网站比赛编号,作为循环因子即可

  2. url <- sprintf('https://g.hupu.com/soccer/data_%d.html',i)

  3. temp <- getURL(url,.encoding='utf-8')

  4. doc <-htmlParse(temp)

  5. players <- readHTMLTable(doc)

  6. home <- players$table_home_players_stats

  7. away <- players$table_away_players_stats

  8. ## 判断数据是否爬取,home_row,away_row均大于1说明数据成功爬取

  9. home_row <- nrow(home)

  10. away_row <- nrow(away)


数据分析:

PART1:五大联赛比赛数据对比

首先我们通过几个维度对比五大联赛比赛的特点,在pc端我们使用subplot将四幅对比图放在一起,使得对比更加直观:

640?wx_fmt=jpeg

通过以上指标我们发现英超的球队平均每场犯规次数远低于其他四大联赛,黄牌数量也较少,这与英超宽松的吹罚尺度有着密切的联系。西甲的越位和黄牌数量在五大联赛中均处于领先位置,严格的吹罚尺度更加有利于技术流的发展。

法甲的整体射门转化率在五大联赛中处于最低位置,一方面是由于一些神级门将的发挥(上届世界杯有着神级发挥的奥乔亚就曾在法甲让大巴黎37脚射门仅进1球),另一方面想必法甲也培养了一批的“吐饼王”。

部分代码如下:

 
 
  1. ## 球队平均每场犯规数绘制,其他图同理

  2. p1 <- ggplot(league_stat,aes(x=联赛,y=平均每队犯规,fill=联赛))+

  3.    geom_boxplot()+

  4.    scale_color_few()+theme_economist()+ggtitle('球队平均每场犯规数')+

  5.    theme(axis.title = element_blank(),

  6.          plot.title = element_text(hjust=0.5,size=17),

  7.          axis.text.x = element_text(size = 15),

  8.          legend.position = 'NONE')  

  9. ## 设置subplot的行、列数

  10. grid.newpage()

  11. pushViewport(viewport(layout=grid.layout(2,2)))

  12. vplayout<-function(x,y){viewport(layout.pos.row =x,layout.pos.col=y)}

  13. ## 将ggplot放置在subplot中

  14. print(p1,vp=vplayout(1,1))

  15. print(p2,vp=vplayout(1,2))

  16. print(p3,vp=vplayout(2,1))

  17. print(p4,vp=vplayout(2,2))


PART2:球员对比

我们首先挑选四项重要指标,进球效率,助攻效率,被犯规频率和扑救成功率的TOP20。其中被犯规频率需要考虑到联赛整体的吹罚尺度,所以计算时会乘以联赛的吹罚系数。下面战死四项指标的组合图:


640?wx_fmt=jpeg

进球效率TOP5:卡瓦尼,法尔考,伊卡尔迪,因莫比莱,迪巴拉

助攻效率TOP5:格德斯,夸德拉多,皮亚尼奇,博格巴,达胡德

被犯规速率TOP5:内马尔,巴恩斯,桑切斯,埃尔南德斯,萨尔

扑救成功率TOP5:奥布拉克,波普,特尔施特根,德赫亚,纳瓦斯

内马尔在对手眼中是个极大的威胁,帮助他最常被侵犯排行榜TOP1,希望内少保重身体,明年世界杯就要来了。格德斯和奥布拉克分列助攻和扑球榜榜首,想必已经引起各大豪门的注意。

之前被诟病的卡瓦尼此次荣登进球效率榜首尾有些出人意料,看来大家的直觉和数据本身有时会有偏差。

另外一个大家很关心的问题就是谁拥有球队绝对开火权,我们选取了射门数量占全队百分比的TOP20,并且对比其射门转化率:

640?wx_fmt=jpeg

梅西、凯恩、C罗、巴洛特利、哲科分列前五位,可见其在球队的地位,巴神在TOP5中射门转化率最高,看来近期状态不错。C罗可能是把进球的感觉都留在了杯赛中,联赛射门转化率不甚理想。

汤姆因斯和卡罗尔两位的射门转化率均为0,这并不是数据缺失,而是这两位确实没有进球,下半赛季两位都需要做出改变。

这部分代码涉及到了melt函数,如下所示:

 
 
  1. ord <- order(player_stat$射门占比,decreasing = TRUE)

  2. player_stat_shemen <- player_stat[ord,][1:20,]

  3. player_stat_shemen <- melt(player_stat_shemen,id=c('球员名','射门占比'),

  4. measure=c('射门占比','射门转化率'))


PART3:联赛球员属性对比

我们最后看一下各大联赛球员的属性,重点是对比年龄和国籍分布情况,首先我们看一下五大联赛整体的对比情况:

640?wx_fmt=png

640?wx_fmt=png

五大联赛中英超外籍球员出场占比,上场球员平均年龄两项指标均高于其他几大联赛。对此本公众号推测足协正是看到了“欧洲中国队”联赛的现状,所以制定出了“标新立异“的u23和外援新政。

最后我们用地图的视角看一下五大联赛的球员国籍分布:

以西甲静态图为例,颜色深浅表示不同国籍的球员出场总时长情况:

640?wx_fmt=jpeg


下面是五大联赛的动态GIF图表,由于公众号图片上传大小的限制,所以可能看的不是特别清晰,每次图片的切换代表不同联赛之间的切换:

640?wx_fmt=gif

该部分重要代码如下:

 
 
  1. p <- echartr(huizong,x=英文名,y=总时间,type='map_world',

  2.    t=联赛,subtype="move + scale")%>%

  3.    setDataRange(valueRange=c(0,20000))


动态图中可以看到,各大联赛的球员国籍分布还是存在些许的差异,在此就不进行详细的展开说明。关于五大联赛的分析暂时就到这里,后续大家关于这方面有更多分析的点可以留言进行交流



往期回顾:

卫视实时收视率对比 | R爬虫&可视化第1季

当古代文人参加“中国好诗人”节目 | R爬虫&可视化第2季

同花顺股票分数可视化 | R爬虫&可视化第3季

近三十年6000部国产电视剧告诉了我们些什么 | R爬虫&可视化第四季



640?wx_fmt=jpeg

公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战  
回复 
Python       1小时破冰入门

回复 数据挖掘     R语言入门及数据挖掘
回复 
人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值