该存储库的自述文件是学习材料、数据源、图书馆、论文、博客等的资源指南,由所有为开源足球分析社区做出贡献的人创建。此 GitHub 存储库和资源列表始终是一项正在进行的工作,会定期添加新资源。如果您觉得我错过了任何资源,请随时创建拉取请求或通过上面的链接向我发送消息,我会尽快回复您!
如果您喜欢该存储库,请随时给它一个(右上角)。干杯!
有关此存储库和作者的更多信息,请参阅以下内容:
此存储库中的代码是用 Python 和 R 混合编写的。开始之前,请确保已安装以下先决条件:
通用 Python 数据科学库:
NumPy
用于多维数组计算;pandas
用于数据分析和操作;matplotlib
和Seaborn
用于数据可视化;和scitkit-learn
和SciPy
。足球分析 Python 库:
kloppy
- Koen Vossen 和 Jan Van Haaren 开发的用于标准化跟踪和事件数据的软件包。请参阅 YouTube 教程 [链接]floodlight
by Floodlight-sports - 用于简化体育数据分析的软件包。它的设计明确关注科学计算,并基于 numpy 或 pandas 等流行库构建。请参阅以下文档[链接]matplotsoccer
- Tom Decroos 开发的用于可视化足球赛事数据的 Python 库mplsoccer
- Andrew Rowlinson 开发的用于在 matplotlib 中绘制足球场的 Python 库PySport
包括PySport Soccer
- 开源运动包的集合,包括本节中提到的许多包,作者:Koen VossenScraperFC
by Owen Seymour - 一个 Python 包,用于从 FiveThirtyEight 数据、FBref、Understat、Club Elo、Capology 和 TransferMarkt 中抓取数据。之前通过 WhoScored? 抓取了 Opta 事件数据?匹配中心(功能现已删除,但请参阅旧版本和 GitHub 存储库以查找此代码)statsbombapi
- StatsBomb 数据的 Python API 包装器和数据类statsbombpy
- 由 Francisco Goitia 编写的用于访问 StatsBomb 数据的 Python 库socceraction
- 一个用于评估足球运动员执行的个人动作的 Python 库。包括 Tom Decroos 等人实施的预期威胁 (xT)。等人。soccer_xg
by ML KU Leuven - 用于训练和分析足球中的预期进球 (xG) 模型的 Python 包soccerdata
- 从 Club Elo、ESPN、FBref、FiveThirtyEight、Football-Data.co.uk、SoFIFA 和 WhoScored(作者:Pieter Robberechts)抓取足球数据tyrone_mings
by FCrSTATS - Python TransferMarkt 网络爬虫通用 R 数据科学库:
足球分析 R 库:
ggsoccer
- R 语言的足球可视化库ggshakeR
- 一个分析和可视化 R 软件包,适用于公开可用的足球数据。请参阅以下文档[链接]StatsBombR
- 一个 R 包,可使用您的登录凭据轻松地将 StatsBomb 数据从 API 或从开放数据 GitHub 存储库免费传输到 Rsoccermatics
by Joe Gallagher - 用于足球跟踪和事件数据可视化和分析的 R 包worldfootballR
by Jason Zivkovic - 用于从 FBref、TransferMarkt、Understat 和 fotmob 中提取世界足球(足球)数据的 R 包(请参阅有关如何使用此包的指南 [链接])?返回
该 GitHub 存储库的内容组织如下:
eddwebster/football_analytics/ ➡️ central repository of code and analysis by Edd Webster ?⚽
│
├── dashboards/ ➡️ store of Tableau dashboards used for analysis ?
│
├── data/ ➡️ a selection of raw and processed data extracts by various providers ??
│ ├── capology
│ ├── davies
│ ├── elo
│ ├── fbref
│ ├── fifa
│ ├── guardian
│ ├── metrica-sports
│ ├── opta
│ ├── reference
│ ├── sb
│ ├── shots
│ ├── stats-perform
│ ├── stratabet
│ ├── tm
│ ├── touchline-analytics
│ ├── twenty-first-group
│ ├── understat
│ └── wyscout
│
├── docs/ ➡️ store of documentation for different vendors ?
│ ├── centre-circle
│ ├── metrica-sports
│ ├── opta
│ ├── sb
│ ├── shots
│ ├── stratabet
│ └── wyscout
│
├── fonts/ ➡️ store of custom and externally acquired fonts used for data visualisation ✍️?
│
├── ? .gitignore ➡️ ignore unnecessary files for version control with Git ?
│
├── img/ ➡️ store of images used for analysis including club badges, vendor logos and official media images ??
│ ├── club_badges/ # badges for football clubs
│ ├── edd_webster/ # images related to Edd Werbster
│ ├── fig/ # generated figures derived from analysis and reports in this repository
│ ├── gif/ # GIF images
│ ├── memes/ # memes
│ ├── pitches/ # images of football pitches and goals used mostly for Tableau visualisation
│ ├── players/ # images of football players
│ ├── vendors/ # logos for data vendors e.g. StatsBomb
│ ├── vizpiration/ # high-quality visualisations and analysis from renowned members of the football analytics community
│ └── websites-blogs/ # logos for data analysis websites and blogs e.g. Club Elo
│
├── scripts/ ➡️ store of libraries and Python and open source code ??
│
├── notebooks/ ➡️ Jupyter notebooks for exploration and visualisation
│ ├── 1_data_scraping/ # notebooks with code to acquire data via webscraping
│ │ ├── Capology Player Salary Web Scraping.ipynb
│ │ ├── FBref Player Stats Web Scraping.ipynb
│ │ └── TransferMarkt Player Bio and Status Web Scraping.ipynb
│ │
│ ├── 2_data_parsing/ # notebooks with code to acquire data via APIs
│ │ ├── Elo Team Ratings Data Parsing.ipynb
│ │ ├── StatsBomb Data Parsing.ipynb
│ │ └── Wyscout Data Parsing.ipynb
│ │
│ ├── 3_data_engineering/ # notebooks with code to engineer raw, unprocessed data to processed data
│ │ ├── Capology Player Salary Data Engineering.ipynb
│ │ ├── Centre Circle Opta CPL Data Engineering.ipynb
│ │ ├── FBref Player Stats Data Engineering.ipynb
│ │ ├── Opta #mcfcanalytics PL 2011-2012.ipynb
│ │ ├── StatsBomb Data Engineering.ipynb
│ │ ├── The Guardian Player Recorded Transfer Fees Data Engineering.ipynb
│ │ ├── TransferMarkt Historical Market Value Data Engineering.ipynb
│ │ ├── TransferMarkt Player Bio and Status Data Engineering.ipynb
│ │ ├── TransferMarkt Player Recorded Transfer Fees Data Engineering.ipynb
│ │ ├── Understat Data Engineering.ipynb
│ │ └── Wyscout Data Engineering.ipynb
│ │
│ ├── 4_data_unification/ # notebooks with code to unify disperate datasets
│ │ └── Unification of Aggregated Seasonal Football Datasets.ipynb
│ │
│ └── 5_data_analysis_and_projects # notebooks with code for example projects and analysis
│ ├── player_similarity_and_clustering
│ │ └── PCA and K-Means Clustering of 'Piqué-like' Defenders.ipynb
│ │
│ ├── tracking_data
│ │ ├── metrica_sports
│ │ │ └── Metrica Tracking Data EDA.ipynb
│ │ └── signality
│ │ ├── Signality Tracking Data Engineering.ipynb
│ │ └── Signality Tracking Data EDA.ipynb
│ │
│ └── xg_modeling
│ ├── shots_dataset
│ │ ├── Logistic Regression Expected Goals Model.ipynb
│ │ └── XGBoost Expected Goals Model.ipynb
│ └── opta_dataset
│ └── raining of an Expected Goals Model Using Opta Event Data.ipynb
│
├── ? README.md ➡️ project description and setup guide for better structure and collaboration ?
│
├── research/ ➡️ central repository of research and publicly available resources in football analytics ?⚽
│ ├── documents/ # documents
│ ├── papers/ # published academic papers and literature
│ └── slides/ # PowerPoint slides for published research
│
└── video/ ➡️ store of videos used or generated for analysis ??
?返回
此存储库中的代码主要是用 Jupyter Notebook 或 Python 脚本编写的,按以下工作流程组织:
?返回
对于使用此存储库中的笔记本中设计的数据生成的 Tableau 仪表板,请参阅我的 Tableau Public 个人资料:public.tableau.com/profile/edd.webster。
Tableau 仪表板示例:
?返回
感谢以下资源,这些资源在本资源指南发布后全部用于填补本资源指南中的空白:
analytics-handbook
GitHub 存储库,作者:Devin Pleuler - 一个用于足球分析入门的 GitHub 存储库awesome-football
by Football.db (Gerald Bauer) - 很棒的足球数据集的集合awesome-football-analytics
awesome-soccer-analytics
作者:Matias MasciotoguideR
by Dom Samangy - 一个 Google 电子表格,包含 200 多个 R 资源、100 多个 Python 教程、30 多个软件包、25 个以上要关注的帐户、10 个备忘单以及一些免费书籍和博客。 GitHub 存储库 [链接]soccer-analytics-resources
Github 存储库,作者:Jan Van Haaren?返回
对于刚接触足球数据的人来说,这是很好的资源:
soccer-analytics-handbook
作者:Devin Pleulerawesome-football-analytics
awesome-soccer-analytics
作者:Matias Masciotosoccer-analytics-resources
?返回
与足球相关的公开数据源和数据集,包括跟踪数据、事件数据、汇总的球员表现数据、详细的比赛统计数据、伤病记录和转会价值等等。
此存储库中的代码和分析中使用的数据源可以在此存储库的data
文件夹或 Google Drive 中找到(由于 GitHub 的 100mb 文件限制)[链接]。然而,此存储库中的所有代码都应该使您能够根据用于分析和可视化的输出来抓取、解析和设计数据集。
要了解有关不同类型可用数据(例如事件和跟踪数据)的更多信息,请参阅“我在哪里可以获得数据?” Devin Pleuler 的soccer_analytics_handbook
部分 [链接]。
要快速了解可用的免费足球数据资源,请参阅 James Nalton 的以下 Twitter 帖子 [链接]。
事件数据是比赛期间发生的每个在球事件的标记数据。数据是从电视录像中手动收集的。要了解有关数据收集的更多信息,请观看以下视频 [链接]。
每场比赛的事件数据大约有 2-3000 个单独的事件(行),具体取决于提供商。
该数据的主要提供者是 StatsBomb、Stats Perform(以前称为 Opta)和 Wyscout。
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
StatsBomb 开放数据 |
| StatsBomb 开放数据 GitHub 存储库 |
StrataBet 的 StrataData | 提供偶然射击数据 | 不再提供(自 2018 年起),但是,可以在旧分析的 GitHub 存储库中找到它(包括这个)[链接]。 |
足球视频和球员位置数据集 | 奥斯陆大学提供的精英足球运动员动作数据集和相应视频。请参阅随附的论文[链接] | [链接](似乎不再有效) |
奥普塔 | 包括“Big 5”欧洲联赛在内的 20 多个联赛的赛事数据,其中一些可以追溯到 09/10 赛季, | 可通过抓取 WhoScored 获得数据?比赛中心通过以下方式:
|
Opta(11/12 样本数据集) | 作为#mcfcanalytics 计划的一部分,11/12 赛季的逐场比赛汇总球员表现数据以及 11/12 曼城对阵博尔顿的 F24 赛事数据 | 然而,它不再可用(自 2012 年起),但可以在旧分析的 GitHub 存储库中找到(包括本分析)。 |
下统计 | 投篮和元数据,包括欧洲“五大”联赛和俄罗斯超级联赛的 xG 值 | 可以通过以下方式访问该数据:
|
怀斯考特 | 卢卡·帕帕拉多 (Luca Pappalardo)、阿莱西奥·罗西 (Alessio Rossi) 和保罗·辛蒂亚 (Paolo Cintia) 提供了 17/18 赛季“五大”欧洲联赛、2016 年欧洲冠军联赛和 2018 年世界杯的赛事数据。请参阅他们的论文足球比赛中时空比赛事件的公共数据集。 | 无花果树 |
跟踪数据每秒记录多次(通常是 10-25 次)场上每个球员以及球的 x 和 y 坐标。因此,数据集相当大,比每场比赛约 2-3 百万行的事件数据大得多。
这些数据是通过安装在体育场内的摄像机收集的,因此无法广泛使用,球队通常只能访问自己联赛中的数据。
该数据的主要提供者是 Second Spectrum、STATS Perform、Metrica Sports 和 Signality。
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
Ricardo Tavares 提供的类似 Last Row Tracking 的数据 | Ricardo Tavares 收集的类似跟踪的数据。请参阅使用此数据的利物浦分析挑战赛(获奖者在追踪之友 [链接] 上讨论)。 | GitHub 仓库 |
Metrica Sports 样本跟踪和相应的事件数据 | 同步事件和跟踪数据的三个示例匹配。有关使用此数据(包括音调控制模型)的代码,请参阅 Laurie Shaw 的LaurieOnTracking GitHub 存储库以及相应的 Friends of Tracking 教程。 | GitHub 仓库 |
信号追踪数据 | 来自超级联赛的三场比赛跟踪数据 - 哈马比 vs. IF Elfsborg (22/07/2019)、哈马比 5 vs. 1 Örebrö (30/09/2019) 以及哈马比 vs. 马尔默 FF (20/10/2019)。 | 该数据作为 2020 年足球数学建模课程的一部分提供。下载数据的密码不公开,但可以在足球 Slack 小组的乌普萨拉数学建模中找到[链接]。如需访问,请联系 Novosom Salvador Twitter 和 [email protected],或者随时联系我本人。请注意,哈马比-厄勒布鲁比赛的下半场尚未完成。 |
广播跟踪是使用计算机视觉技术从广播片段中收集的。与体育场内的跟踪数据不同,该数据集并不完整,并且缺少广播镜头镜头之外的球员。然而,最大的好处是收集的数据要便宜得多,并且可用联赛的覆盖范围要大得多,这对于招聘分析等任务非常有用。
该数据的主要提供者是SkillCorner 和Sportlogiq。
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
SkillCorner广播追踪数据 | 9场赛事转播追踪数据,包括2019/2020赛季英超、法甲、西班牙西甲、意甲、德甲冠亚军的比赛。要了解有关广播跟踪数据及其用例的更多信息,请参阅以下 Medium 文章 [链接]。 | GitHub 仓库 |
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
戴维斯建模数据 | Sam Goldberg 和 Mike Imburgio 对美国足球分析的球员评估估计数据。要了解有关 DAVIES 的更多信息,请参阅以下博客文章 [链接]。 | 闪亮的应用程序 |
FBref 逐季汇总球员表现数据由 StatsPerform 提供。 | 以下比赛的汇总球员表现数据:
| 注意: 2022 年 10 月,FBref 用于统计的数据提供程序发生了变化,从 StatsBomb 更改为 StatsPerform。因此,以下抓取代码分为当前工作解决方案和存档解决方案:
|
统计表现和中心圈加拿大超级联赛数据 | 汇总球员表现数据 | 谷歌云端硬盘 |
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
Elo 俱乐部排名 | 俱乐部足球的 Elo 评级基于过去的结果,可以评估每个俱乐部的实力,从而预测未来。 | 数据可通过以下方式获取:
|
欧元俱乐部指数 | 所有欧洲国家最高级别足球队的排名,显示了它们在特定时间点的相对比赛实力以及比赛实力的发展情况。要了解有关计算这些排名的方法的更多信息,请参阅以下页面 [链接] | 关联 |
FiveThirtyEight 俱乐部排名 | 全球俱乐部足球排名。 637 个国际俱乐部球队如何通过足球实力指数进行比较 | 数据可通过以下方式获取:
|
Opta实力排名 | Opta实力排名 | 数据可通过以下方式获取:
|
欧足联俱乐部系数 | 欧足联俱乐部系数排名基于所有欧洲俱乐部在欧足联俱乐部比赛中的成绩。 | 数据可通过以下方式获取:
|
世界足球/足球俱乐部排名 | 俱乐部排名网站 | 关联 |
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
德甲物理数据 | 德甲球员统计数据,由 AWS 提供支持 | 链接(未抓取到 CSV 中) |
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
2018 FIFA 世界杯名单 | 2018 年 FIFA 世界杯名单上球员的进球数、出场次数、俱乐部和出生日期。资料来源:数据世界 | Excel |
足球数据 | 1871-2017 年英国和欧洲足球成绩 | GitHub 仓库 |
国际足联世界杯比赛结果 | 1930 年至 2014 年 FIFA 世界杯比赛的对阵和结果。来源:data.world | Excel |
火暴暴徒 | 数据集包括球队和比赛统计数据,包括 xG 和投篮后 xG。 | 可以使用以下方法抓取该数据:
|
足球阵容 | 由用户众包的球队战术和阵型数据库。 | 关联 |
international_results | 存储了从 1872 年第一场正式比赛到 2022 年的 44,353 场国际足球比赛的结果。 | GitHub 仓库 |
聪明侦察兵 | 用于评估世界各地足球运动员表现的球探和球员评级信息平台。该平台由 North Yard Analytics 的 Dan Altman 开发,用于评估玩家对获胜的贡献、他们的比赛风格和技能水平。注意:这是一项订阅服务。 | 关联 |
SofaScore | 实时比分、阵容、积分榜、热图以及球队、教练和球员的基本数据 | 关联 |
足球之路 | 比赛表数据 | 关联 |
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
卡波洛奇 | 球员工资 | 请参阅 Capology Player Salary Web Scraping 笔记本,了解用于抓取 Capology 数据或访问数据子文件夹中保存的 CSV 文件的 Python 代码 |
毕马威足球基准 | 球员估值数据 | |
足球大师电子表格的价格 | 来自足球金融/商业方面的数据,作者:Kieran Maguire | 关联 |
斯波特拉克 | 英超联赛、美国职业足球大联盟和 NWSL 的球员合同、工资和转会信息 | |
转会市场 | 球员简介、合同和估计价值数据 | 可以通过以下方式访问该数据:
|
守护者球员传输数据 | 由 Tom Worville 整理(参见推文 [链接]) | GitHub |
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
投注浏览器 | 赔率数据 | 关联 |
FiveThirtyEight 足球预测数据库 | 足球预测数据 | 关联 |
Football-Data.co.uk | 免费投注和足球投注、历史足球结果和投注赔率档案、实时比分、赔率比较、投注建议和投注文章 | 关联 |
1872 年至 2020 年国际足球赛果 | Mart Jürisoo 提供的包含 40,000 多个国际足球比赛结果的最新数据集 | 关联 |
有关如何绘制您自己的事件数据的更多信息,请参阅 Mark Wilkin 的 Twitter 帖子 [链接]:
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
xT网格 | 由 Karun Singh 确定的 2017-18 英超赛季(12x8 网格)的全联盟预期威胁 (xT) 值。有关 xT 的更多信息,请参阅 Karun 的博客文章 [链接] | 关联 |
光伏并网 | 由 Laurie Shaw 确定的预期占有价值网格。请参阅以下讲座了解更多信息 [链接] | 关联 |
球场的区域 | 将球场分解为多个区域,用于可视化。由 Rob Carroll 创建 | 关联 |
姓名 | 评论 | 获取数据的来源/方法 |
---|---|---|
awesome-football by Football.db (Gerald Bauer) | 精彩足球(国家队、俱乐部、比赛日程、球员、体育场等)数据集的集合 | GitHub 仓库 |
数据中心 足球数据 | 关联 | |
欧洲足球数据库 | 超过 25,000 场欧洲职业足球比赛、球员和球队属性 | 关联 |
FIFA 15-22 球员评分数据 | Stefano Leone 从 SoFIFA 中摘录 | 关联 |
FIFA 18 球员评分 | 17k+ 球员,从 FIFA 18 中提取的 70+ 属性,由 sofifa 提供 | 关联 |
FootballData | “JSON 和 CSV 足球数据的大杂烩” | GitHub |
footballcsv | CSV 格式的历史足球比赛结果 | 关联 |
足球数据库 | 一个免费且开放的公共领域足球数据库和模式,可用于任何(编程)语言(例如使用普通数据集) | 关联 |
足球xG | 关联 | |
Joe Kampschmid 的橄榄球/足球数据和 API 指南 | 关联 | |
我的足球事实 | 关联 | |
理疗室 | 关联 | |
加减数据 | 逐个播放数据来自 espn.com | 关联 |
Rec.Sport.Soccer 统计基金会 | 历史联赛表和足球结果 | 关联 |
RoboCup 足球模拟器 | RoboCup 足球模拟器数据 | 关联 |
斯夸卡 | 关联 | |
统计地堡 | 关联 | |
Tableau 数据资源 | 包括运动数据 | 关联 |
转会联赛 | 关联 | |
十二足球 | 关联 | |
沃索统计器 | 来自世界各地的女子足球数据 | 关联 |
所有文档都保存在本地文档子文件夹中,包括:
?返回
soccer_analytics
by Kraus Clemens - 一个促进分析起点的 Python 项目Football-Analytics-With-Python
查看由 Ninad Barbadikar 组织的 Tableau for Sports Discord 服务器,与 Tableau 开发人员社区进行互动
有关我从 Tableau Football 用户组、Rob Carroll、Tom Goodall 和 Ninad Barbadikar 等各种来源整理的 Tableau 足球视频和教程的 YouTube 播放列表,请参阅以下 [链接]。