该存储库包含一系列工具,项目和资源,可以有效地分析和可视化足球数据。
该存储库包含一系列工具,项目和资源,旨在支持足球数据中有意义的见解。 Python用于提取,处理,分析和可视化事件数据,汇总团队数据,市场价值数据等。
存储库分为Mutliple项目和子项目,每个项目旨在进行详细的分析,产生一些特定的见解,或者引入一定程度的自动化足球数据分析。使用此存储库的内容,通过Twitter(@_jkds_)创建了许多新颖且内容丰富的视觉效果和文本线程并与足球数据分析社区共享。
为了支持希望在足球数据的背景下发展其数据分析技能的其他人,我制作了入门指南。
下面的树(单击下拉下来以展开)显示此GIT存储库的文件夹结构。请注意,为简单起见,从图中省略了一些单独的文件。
football-data-analytics
│
├── analysis_tools
│ ├── __init__.py
│ ├── get_football_data.py [not included in git repo]
│ ├── logos_and_badges.py
│ ├── models.py
│ ├── pitch_zones.py
│ ├── statsbomb_custom_events.py
│ ├── statsbomb_data_engineering.py
│ ├── whoscored_custom_events.py
│ ├── whoscored_data_engineering.py
│ ├── wyscout_data_engineering.py
│
├── data_directory
│ ├── leaguetable_data
│ ├── misc_data
│ │ ├── articles
│ │ ├── images
│ ├── statsbomb_data [contents not included in git repo]
│ ├── transfermarkt_data
│ ├── whoscored_data [contents not included in git repo]
│ ├── wyscout_data
│
├── model_directory
│ ├── pass_cluster_model
│ │ ├── PassClusterModel65.joblib
│ ├── xg_model
│ │ ├── log_regression_xg_model.joblib
│
├── projects
│ ├── 00_data_import_and_misc_work
│ │ ├── download_yt_video.py
│ │ ├── import_data_fbref.py
│ │ ├── import_data_leaguetable.py
│ │ ├── import_data_whoscored.py
│ │ ├── scrape_data_transfermarkt.py
│ │ ├── misc_work
│ ├── 01_wc2018_box2box_mids
│ │ ├── worldcup_b2b_mids.py
│ ├── 02_player_team_valuation
│ │ ├── team_player_value_analysis.py
│ ├── 03_model_development_and_implementation
│ │ ├── pass_cluster_data_collection.py
│ │ ├── shot_xg_plot.py
│ │ ├── xg_log_regression_model.py
│ │ ├── xg_neural_network.py
│ ├── 04_match_reports
│ │ ├── off_def_shape_report_ws.py
│ │ ├── pass_report_ws.py
│ │ ├── shot_report_understat.py
│ ├── 05_competition_reports_top_players
│ │ ├── player_defensive_contribution.py
│ │ ├── player_effective_carriers.py
│ │ ├── player_effective_passers.py
│ │ ├── player_high_defensive_actions.py
│ │ ├── player_impact_on_team.py
│ │ ├── player_penalty_takers.py
│ │ ├── player_threat_creators.py
│ │ ├── player_threat_creators_zonal_comparison.py
│ ├── 06_competition_reports_top_teams
│ │ ├── team_ball_winning.py
│ │ ├── team_common_zonal_actions.py
│ │ ├── team_cross_success.py
│ │ ├── team_delta_threat_creation.py
│ │ ├── team_fullback_combinations.py
│ │ ├── team_setpiece_shot_concession.py
│ │ ├── team_threat_creation.py
│ │ ├── xg_league_table_sb.py
│ ├── 07_player_reports
│ │ ├── advanced_swarm_radar.py
│ │ ├── player_report_fullback.py
│ ├── 08_evolution_of_shooting
│ │ ├── shot_characteristics_trending.py
│ ├── 09_league_position_metric_correlation
│ │ ├── team_metric_pts_correlation.py
│ ├── 10_team_buildup_passes
│ │ ├── team_pass_tendencies.py
│ ├── 11_justice_league
│ │ ├── justice_league.py
│ ├── 99_private_work
│
├── .gitignore
│
├── Getting Started with Football Analytics.md
│
├── LICENSE
│
├── README.md
如上上面的文件夹结构所示,存储库包含三个关键文件夹:
通常,每个项目都遵循许多逻辑步骤:
项目是根据已进行和存储的项目文件夹区域的数值标识符进行编号的。当在同一文件夹区域进行了多个子项目/项目时,使用小数。例如,子项目2.1和2.2是项目2中存在的两个单独的作品,该作品存储在文件夹区域02_player_team_valuation_valuation_transfermarkt中。选择一个项目标题以扩展下拉菜单并了解更多信息。
数据来源: Statsbomb&FIFA匹配报告
项目区域: 01_WC2018_BOX2BOX_MIDS
代码: worldcup_b2b_mids.py
摘要和输出:对2018年世界杯上最有效的中场球员的最有效盒子的调查。许多定制指标用于在赢得球,保留球和创造力以及移动性方面为中场中场评分。一个盒子中场的好盒子被定义为在每个区域中脱颖而出的中场中场。
数据来源: Transfermarkt
项目区域: 00_data_import_and_misc_work&02_player_team_valuation
代码: scrape_data_transfermarkt.py&team_player_value_analysis.py
摘要和输出:开发从Transfermarkt.co.uk刮擦团队和玩家市场价值信息的工具。产生了“侦察视觉效果”,突出了一个给定联盟的球员,其年龄和目标贡献的组合为每个£m的市场价值。这项工作还探讨了使用统计模型根据玩家绩效预测市场价值的使用。
数据来源: Transfermarkt
项目区域: 00_data_import_and_misc_work&02_player_team_valuation
代码: scrape_data_transfermarkt.py&team_player_value_analysis.py
摘要和输出:开发从Transfermarkt.co.uk刮擦团队和玩家市场价值信息的工具。根据联盟排名和总阵容的总数排名对团队/过度表现的调查。
数据来源: Wyscout
项目区域: model_directory&03_model_development_and_implementation
代码: xg_log_regression_model.py,xg_neural_network.py&shot_xg_plot.py.py
摘要和输出:基本预期目标概率模型的实施和测试。这项工作包括对逻辑回归预期目标模型和神经网络预期目标模型的开发和比较,在2017/2018赛季期间,每次都训练了欧洲“五巨头”联赛的40000张射击。这些模型用于在定义的时间段内计算特定球员,俱乐部和联赛的预期目标。
数据来源: Opta
项目区域: model_directory,03_model_development_and_implementation and Funsere Repo:ml_models_collection
代码: pass_cluster_data_collection.py,models.py,外部回购:ml_model.ipynb
摘要和输出:使用欧洲的“ Big 5”联赛(Opta Data,2019/20-2022/23)使用5,000,000多次通过,我构建了一个聚类模型,能够将成功的通行证分配给65个群集之一。这项工作涉及建造机器学习管道和各种分类算法的测试。所选模型使用AK表示聚类算法来分配通行证,然后我将其包装在聚类功能中,以支持我的许多足球分析项目。
数据来源: Statsbomb
项目区域: Analysis_tools
代码: models.py
摘要和输出:实施蒙特卡罗方法,以基于射击事件及其相关的预期目标(XG)为基于单个匹配结果的概率进行建模。在给定的匹配项上运行了大量(10000+)的模拟,以示意每个团队的近似获胜概率,并提取概率。然后简单地将给定匹配项中的预期点计算为3×win_probability + 1×draw_proability。所采用的方法取决于XG代表评分概率的假设,并且单个射击事件是独立的。
数据源:小幅
项目区域: 04_Match_Reports
代码: shot_report_understat.py
摘要和输出:开发脚本以从低音中提取镜头数据,并为任何选定的匹配生成SHOT报告。
数据来源: Opta/Whoscored
项目区域: 04_Match_Reports
代码: pass_report_ws.py
摘要和输出:根据启动和结束的音高区域来识别和计数类似的算法的设计和开发。任何选定匹配的区域间通过流量报告的生成。
数据来源: Opta/Whoscored
项目区域: 04_Match_Reports
代码: pass_report_ws.py
摘要和输出:算法的设计和开发,以根据整个比赛中的所有游戏内动作的位置来计算玩家领土,包括删除异常值。任何选定匹配的形状报告生成,包括将区域区域计算为覆盖俯仰区域的代理。
数据来源: Opta/Whoscored
项目区域: 05_competition_reports_top_players
代码: player_defension_contribution.py
摘要和输出:在比赛期间对所有球员的防守贡献进行评估,并通过指标来确定顶级球员,例如每100个反对派触动等指标。工作包括植入钻石散射图,该图可以用于任何2D散点图。
数据来源: Opta/Whoscored
项目区域: 05_competition_reports_top_players
代码: player_defension_contribution.py
摘要和输出:评估反对派在反对派中完成的防守措施的数量,所有球员在比赛期间的所有球员都表明谁倾向于从前线防守。
数据来源: Opta/Whoscored
项目区域: 05_competition_reports_top_players
代码: player_effective_passers.py
摘要和输出:通过评估在竞争期间完成的所有播放通行证的有效路人的识别。诸如渐进式通行证,累积预期威胁和每90个对立框之类的指标被用来识别顶级球员。这项工作涉及实施卡伦·辛格(Karun Singh)开发的预期威胁模型。
数据来源: Opta/Whoscored
项目区域: 05_competition_reports_top_players
代码: player_effective_carriers.py
摘要和产出:通过评估竞争期间完成的携带者来识别有效载体。这项工作涉及开发一个模块,从OPTA事件数据中推断事件(由于未记录携带)。
数据来源: Opta/Whoscored
项目区域: 05_competition_reports_top_players
代码: player_effective_carriers.py
摘要和输出:通过评估在球场不同区域内竞争期间完成的各种事件/动作来识别最高威胁创建者。这项工作涉及实施卡伦·辛格(Karun Singh)开发的预期威胁模型。
数据来源: Opta/Whoscored
项目区域: 05_competition_reports_top_players
代码: player_thrat_creators.py
摘要和输出:在多个比赛中确定最高罚款者。罚款质量被评估为我与门将米德里夫(Midriff)的平均靶向罚球距离,而脱离目标的罚款分配为零。这项工作包括在2D子图内实施“ 3D投影”。
数据来源: Opta/Whoscored
项目区域: 05_competition_reports_top_players
代码: player_impact_on_team.py
摘要和输出:确定团队的诱人指标(团队预期威胁,预期威胁,预期威胁差异等)在特定球员在球场上而不是在没有比赛时会有所不同
数据来源: Opta/Whoscored
项目区域: 06_competition_reports_top_teams
代码: team_threat_creation.py
摘要和输出:通过通过竞赛通行证创造的总威胁和每90次携带的全部威胁的排名,包括识别每个团队产生威胁的区域。
数据来源: Opta/Whoscored
项目区域: 06_competition_reports_top_teams
代码: team_ball_winning.py
摘要和输出:平均高度对球队的排名排名,他们赢得了球的冠军,包括确定他们从对手那里获得球的区域。
数据来源: Opta/Whoscored
项目区域: 06_competition_reports_top_teams
代码: team_cross_success.py
摘要和输出:按竞争对手交叉成功率对团队的排名。这项工作包括一个有效(或成功)十字架的自定义定义,其中有效的十字架是在游戏的5秒内进行射击或钥匙传球的定义(不论iNITAR横断面的结果如何)。
数据来源: Opta/Whoscored
项目区域: 06_competition_reports_top_teams
代码: team_fullback_combinations.py
摘要和输出:团队的排列频率的排名排名。根据通行证是否导致进球的射门,每个团队的后卫之间的通过。
数据来源: Opta/Whoscored
项目区域: 06_competition_reports_top_teams
代码: team_delta_threat_creation.py
摘要和产出:通过在比赛中获得的总威胁的改进来对团队排名,每90赛季与上个赛季的竞赛。包括对上一年上方或以下部门的团队的核算。威胁创造的变化也被俯仰区分解
数据来源: Opta/Whoscored
项目区域: 06_competition_reports_top_teams
代码: team_setpiece_shot_concession.py
摘要和产出:通过汇总机会在反对派“间接”套件的5秒内承认,对团队捍卫场景的能力进行了调查。 “间接”套件是指在拍摄固定件后球保持球的角球和任意球,因此,分析中排除了脱离目标的任意球和固定装置的直接进球。
数据来源: Statsbomb
项目区域: 06_competition_reports_top_teams
代码: xg_league_table_sb.py
摘要和输出:基于团队的XG,XG性能,XG/XT评分和其他各种指标的各种联盟排名。
数据来源: Opta/Whoscored
项目区域: 07_PLAYER_REPORTS
代码: player_report_fullback.py
摘要和输出:玩家报告专门针对后卫的报告,包括开发灵活/强大的机制,以将报告与类似玩家进行比较,然后将一组球员与所选联盟中所有后卫进行排名。
数据来源: Opta/Whoscored
项目区域: 07_PLAYER_REPORTS
代码: Advanced_swarm_radar.py
摘要和输出:开发一种可视化玩家性能的新颖而创新的手段。 “群”雷达可以快速介绍,评估和比较玩家,但也可以通过显示一个比较玩家之间的度量分数的分布来提供更深层次的背景。
数据来源: Opta/Whoscored
项目区域: 08_Evolution_of_shooting
代码: shot_characteristics_trending.py
摘要和产出:专业足球协会(APFA)签订的一项工作,探索射击艺术在足球比赛中的变化以及对英超联赛射击的发展的见解。
APFA-英超网络文章中拍摄的演变
APFA-英超射击的演变。pdf
数据来源: Opta/Whoscored
项目区域: 09_LEAGUE_POINTION_METRIC_CORRARATION
代码: team_metrics_pts_correlation.py
摘要和输出:探索性工作,以确定特定联赛中成功团队的特征。调查了使用5个以上的数据,对团队指标与一个赛季积累的点有多大相关性。该项目的输出包含在TIFO视频中 - 为什么埃弗顿比您想象的要好。
数据来源: Opta/Whoscored
项目区域: 10_team_buildup_passes
代码: team_pass_tendencies.py
摘要和输出:对以前的通过群集的开发,以识别团队堆积的传球趋势。这是在球队在球场各个区域中进行的前6个传球的普通传球群体。
数据来源: Statsbomb
项目区域: 11_justice_league
代码: justice_league.py
摘要和输出:基于概率的比赛成果(或预期点),对积分建模的先前工作进行开发,以模拟整个比赛和重新制作联盟榜单。