根据开源项目,进攻三区传球成功率?

wen 开源项目 1

本文目录导读:

根据开源项目,进攻三区传球成功率?

  1. 常用开源/公开数据源
  2. 计算逻辑(以 StatsBomb 为例)
  3. 可参考的开源项目
  4. 注意事项

在足球数据分析领域,“进攻三区传球成功率”(Final Third Pass Accuracy)通常指:球员或球队在对方后场最后三分之一区域内的成功传球数 ÷ 该区域内总传球尝试数

开源项目里并没有一个统一、直接叫这个名字的现成指标,需要自己基于事件数据计算,下面按“开源数据源 → 计算逻辑 → 可用的开源项目”


常用开源/公开数据源

数据源 说明 是否含坐标
StatsBomb Open Data GitHub 上免费开放,含 360 度数据、传球坐标、终点坐标
Wyscout Open Data Figshare 公开样本,含事件坐标
FBref 网页数据,可爬取,但无逐事件坐标 ❌(只有汇总)
Understat xG 等,无传球坐标
Metrica Sports Sample 公开样本事件数据

要做“进攻三区传球成功率”,必须用带坐标的逐事件数据,首选 StatsBomb Open Data


计算逻辑(以 StatsBomb 为例)

  1. 确定进攻方向:每支球队进攻方向不同,需按 possession_team 和半场翻转坐标,统一为“进攻方向 = x 增大”。
  2. 划分三区:球场长 120(StatsBomb 坐标),进攻三区通常指 x > 80(即最后 40 码/约 1/3)。
  3. 筛选传球事件type == "Pass"
  4. 判断起点是否在进攻三区pass.start_x > 80(有的口径用终点,需明确)。
  5. 统计
    • 总传球 = 该区域内所有 Pass
    • 成功传球 = pass.outcome 为空(StatsBomb 中成功传球无 outcome 字段)
    • 成功率 = 成功 / 总
# 伪代码
final_third_passes = df[
    (df.type == "Pass") &
    (df.pass_start_x > 80)   # 进攻三区
]
success = final_third_passes[final_third_passes.pass_outcome.isna()]
accuracy = len(success) / len(final_third_passes)

可参考的开源项目

  1. statsbomb/open-data(GitHub)

    官方开放数据,含逐事件坐标,是计算基础。

  2. mckayjohns/Football_Analytics(GitHub)

    有大量 StatsBomb 数据可视化与指标计算示例,可改成进攻三区传球。

  3. socceraction(GitHub,ML-KULeuven)

    把事件数据转成 SPADL 格式,统一坐标,方便按区域统计。

  4. mplsoccer(GitHub)

    画传球图、分区图,常配合 StatsBomb 使用。

  5. FBref / fbref-scraper

    若只要球队级汇总,FBref 有 “Final Third” 相关传球数据(部分联赛),可直接爬。

  6. understat / understatapi

    无传球区域数据,不适用。


注意事项

  • 口径差异:起点在进攻三区 vs 终点在进攻三区,结果不同;是否含传中、角球、界外球也要定义。
  • 坐标翻转:StatsBomb 每队进攻方向不同,必须统一,否则区域判断会错。
  • 成功定义:StatsBomb 中“成功传球”= 无 outcome;被拦截、出界、被断都算失败。
  • 样本量:单场进攻三区传球可能只有几十次,成功率波动大,建议多场累计。

如果你告诉我你用的是 StatsBomb 还是 Wyscout,以及要球员级还是球队级,我可以给你一段能直接跑的完整 Python 代码。

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