分析梅西和罗纳尔多的比赛数据-腾讯云开发者社区-腾讯云
翻译:老齐
2003年,迈克尔·刘易斯出版了《点球成金》,这是一本关于比利·比恩的书,他是奥克兰运动家棒球队队的总经理,他将统计分析应用于棒球,以确定和招募被低估的棒球运动员。通过数据的运用,比利·比恩所取得的胜利与薪资水平翻倍的球队一样多,并且从2000年到2003年连续4年参加了附加赛。
2011年,《点球成金》被改编成电影,由布拉德·皮特饰演比利·比恩。这本书和这部电影都很成功,极大地促进了利用数据提高比赛成绩的理念。对体育数据进行分析,进而提交竞技比赛成绩,通常称之为体育分析(Sport analytics)。
在棒球中,这项运动的性质使得收集大量关于比赛中的数据点比较容易。你可以从这个链接下载数据(其中包含了自1871年以来的关于球员和球队的比赛数据和其他统计数据。如果你对分析棒球数据感兴趣,你可以本微信公众号关注相关的文章。
然而,收集足球数据就变得复杂多了。在足球场上,22个队员无时不刻不在运动中,他们在球场上的位置和移动路径的可能可以说有无穷种,幸运的是,在这几年里,随着传感器技术和视频分析技术的进步,获得高质量的足球比赛数据也称为了可能,从而可以利用这些数据对比赛、球队和球员的情况进行分析。在本文中,我们将使用公开的足球数据集,分析梅西和罗纳尔多在2017-2018赛季中的有关数据,并为此开发一个网页,在网页上,我们以交互的方式来比较这两名球员在场上的位置。
非常感谢Luca Pappalardo博士(和他的同事们,感谢他们为公众提供了这么伟大的数据集。
下面的动画,就是这个应用的简单演示,你可以到github仓库中得到源码(
过去十年里,梅西和罗纳尔多共获得11个金球奖(梅西6个,罗纳尔多5个),可以说统治当时的世界足球。这两位球员都被认为是有史以来最伟大的球员之一,所以也经常被拿来比较。
我们将分析这两位球员在2017-2018赛季西班牙联赛中的表现,这是罗纳尔多转会尤文图斯之前在西班牙的最后一个赛季。1.1 获取数据
首先,我们要下载有关数据集,下载地址是:然后关注如下部分:1.2 读入数据
下面是我们使用的Python库:javascript
然后从文件,根据id读入两个球员的数据:
再从文件中根据id找到他们所在的球队:
接下来读入西班牙联赛的比赛数据:javascript1.3 构造数据
从前述数据中,分别得到皇家马德里和巴塞罗那两个俱乐部的比赛信息。javascript
将它们转化为DataFrame对象。javascriptjavascript
输出:javascript
接下来,将梅西和罗纳尔多的有关数据,也生成为DataFrame。javascript
从中选择我们需要的时间标签:
将这些标签加入到DataFrame中作为一列。javascript
输出:javascriptjavascript
输出:javascript
把前面关于比赛的信息也合并过来。javascript
保存数据。javascript
接下来,还要讲皇家马德里和巴塞罗那两只球队在2017-18赛季的比赛相关数据读取出来。javascript
输出:javascript
也保存一下。javascript
在这部分,要分析梅西和罗纳尔多在球场上的表现数据了,我们会利用一些统计分析,以可视化的方式表现他们在球场上的状况。
球员的行为统计。javascript
左脚和右脚球比较。javascriptjavascript
两个球员在球场上的有关数据都保存在了和中,我们可以创建一个坐标写,两个坐标轴的范围都是[0, 100],表示占进攻一方场上的百分比,下面用可视化方式展示。javascript
输出:javascript
在这里,使用了bokeh可视化模块,涉及到两个简单的函数:
函数的源码,可以通过连接得到(
注:如果在调试环境中,会得到动态图示,这里显示的是截图效果。
现在我们知道了如何读取、构造和绘制数据,下面可以开始创建web应用。这个应用的目标是比较梅西和罗纳尔多的比赛,集中在进球、助攻、射门、任意球和传球。
每个动作类型都有一个标签,在选项卡中,我们将显示各种动作的统计数据和位置,分解按比赛计数。该应用还将有一个过滤器,可以使用它来选择左、右脚的动作。
开发中,利用一个开源的框架Streamlit(它是Python中的一个库,可以用安装。Streamlit可以很容实现一个web应用,只需要使用Python,不需要HTML/CSS/JS等代码。
你可以在本项目的代码仓库中下载应用源码,然后在本地执行将项目运行起来,并在浏览器打开查看效果。
本文,我们分析了梅西和罗纳尔多的有关数据,你其实可以参考本文内容,继续分析其他球员、球队或者每场比赛。
原文链接: