开源项目统计禁区内射门次数对比?

wen 开源项目 1

本文目录导读:

开源项目统计禁区内射门次数对比?

  1. 先明确统计口径
  2. 可用的开源数据源
  3. 推荐实现路径(StatsBomb Open Data)
  4. 现成可参考的项目
  5. 注意事项

你提到的“禁区内射门次数对比”在公开开源项目里没有统一、现成的统计口径,因为“禁区”定义、数据源、赛事范围都不同,下面给你一个可落地的方案和可参考的开源资源。

先明确统计口径

要做对比,先定三件事:

  • 赛事范围:英超/西甲/欧冠/世界杯?不同赛事数据源不同。
  • 禁区定义:通常指大禁区(penalty area),但有些数据商把“六码区”单独拆出。
  • 射门类型:是否包含头球、是否包含被封堵的射门、是否只算运动战。

可用的开源数据源

数据源 备注
StatsBomb Open Data 事件级数据,含 shot 事件的 location 坐标 可自行判断是否在禁区内,最推荐
FBref 球队/球员射门统计 有“禁区内射门”相关字段,但需爬取
Understat xG 和射门位置 部分字段可推算
football-data.co.uk 比赛结果和赔率 无射门位置,不适合
Wyscout 公开样本 事件数据 样本较少

推荐实现路径(StatsBomb Open Data)

StatsBomb 的 shot 事件里有 location: [x, y],球场坐标是 120×80,大禁区范围约为 x ≥ 102 且 18 ≤ y ≤ 62(以进攻方向为准,需按半场翻转处理)。

伪代码:

def in_penalty_area(loc, attacking_left_to_right=True):
    x, y = loc
    if not attacking_left_to_right:
        x = 120 - x
    return x >= 102 and 18 <= y <= 62
# 统计某队禁区内射门
shots = [e for e in events if e['type']['name'] == 'Shot']
in_box = [s for s in shots if in_penalty_area(s['location'])]

然后按球队/赛事聚合,就能做“禁区内射门次数对比”。

现成可参考的项目

  • socceraction(GitHub):把 StatsBomb 事件转成 SPADL,含射门位置处理。
  • mplsoccer:画禁区、射门图很方便。
  • StatsBombR / statsbombpy:Python/R 读取开放数据。
  • FBref 爬虫项目(如 soccerdata):可抓球队射门分区统计。

注意事项

  • 版权:StatsBomb 开放数据仅限非商业研究,需遵守其许可。
  • 坐标翻转:主客场/进攻方向不同,必须先归一化。
  • 样本偏差:开放数据只覆盖部分赛事(如女足、部分男足联赛),做“对比”时注意样本一致性。

如果你告诉我具体想对比哪些联赛/球队/赛季,以及你手上是否已有数据,我可以帮你写具体的统计脚本或 SQL。

上一篇开源项目认为这次斜长传转移合理吗?

下一篇当前分类已是最新一篇

抱歉,评论功能暂时关闭!

友情链接攻略窝 · 礼包窝 · 配置窝 · 换算窝 · 算法窝 · 查文窝 · 手册窝 · 问答窝 · 全文搜 · 手册库
相关站点礼包窝 · 查文窝