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

wen 开源项目 4

本文目录导读:

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

  1. 概念定义
  2. 基于 StatsBomb Open Data 的计算示例
  3. 不同开源项目里的对应字段
  4. 常见坑
  5. 典型数值参考

在足球数据分析(尤其基于开源项目如 StatsBomb Open Data、Wyscout、Metrica、SoccerMap 等)中,“进攻三区传球成功率”通常不是一个项目直接给出的字段,而是需要自己按坐标过滤后计算,下面给你一个可直接落地的定义与算法。

概念定义

进攻三区(Final Third / Attacking Third):一般指球场纵向靠对方球门的 1/3 区域。

  • 以进攻方向为准:x 从 2/3 场到对方底线 的区域
  • StatsBomb 坐标:场地长 120,进攻三区为 x ≥ 80
  • Opta/Wyscout 坐标:场地长 100,进攻三区为 x ≥ 66.7
  • 若以 105m 场地:进攻三区为 x ≥ 70

传球成功率

[ \text{成功率} = \frac{\text{成功传球数}}{\text{总传球数}} \times 100\% ]

进攻三区传球成功率

[ \frac{\text{传球起点在进攻三区且成功的传球数}}{\text{传球起点在进攻三区的总传球数}} ]

注意:有的项目按“传球终点在进攻三区”或“传球起点或终点任一在进攻三区”统计,口径不同结果差异很大,最常见口径是 传球起点位于进攻三区

基于 StatsBomb Open Data 的计算示例

StatsBomb 事件数据里,传球事件字段:

{
  "type": {"name": "Pass"},
  "location": [x, y],
  "pass": {
    "outcome": {"name": "Incomplete"}  // 没有 outcome 表示成功
  }
}

Python 示例

import pandas as pd
from statsbombpy import sb
# 1. 读取某场比赛事件
events = sb.events(match_id=3788741)  # 示例 match_id
# 2. 只保留传球
passes = events[events['type'] == 'Pass'].copy()
# 3. 提取传球起点坐标
passes['x'] = passes['location'].apply(lambda loc: loc[0] if isinstance(loc, list) else None)
passes['y'] = passes['location'].apply(lambda loc: loc[1] if isinstance(loc, list) else None)
# 4. 判断是否在进攻三区(StatsBomb: x >= 80)
att_third = passes[passes['x'] >= 80]
# 5. 判断成功:pass.outcome 为空即成功
att_third['success'] = att_third['pass_outcome'].isna()
# 6. 计算成功率
success_rate = att_third['success'].mean() * 100
print(f"进攻三区传球成功率: {success_rate:.2f}%")
print(f"样本传球数: {len(att_third)}")

按球员汇总

result = (
    att_third
    .groupby('player')['success']
    .agg(['mean', 'count'])
    .rename(columns={'mean': '成功率', 'count': '传球数'})
)
result['成功率'] = (result['成功率'] * 100).round(2)
result = result[result['传球数'] >= 5]  # 过滤样本过小
print(result.sort_values('成功率', ascending=False))

不同开源项目里的对应字段

项目 坐标 进攻三区阈值 成功率字段
StatsBomb Open Data 120×80 x ≥ 80 pass.outcome 为空
Wyscout 100×100 x ≥ 66.7 eventName == "Pass" + tags
Metrica 归一化 0–1 x ≥ 0.667 需自建
Opta (公开样本) 100×100 x ≥ 66.7 outcome == 1
SoccerMap 105×68 x ≥ 70 需自建
FBref (基于 StatsBomb/Opta) 不直接提供 需从事件数据算

常见坑

  1. 坐标方向不统一:有的项目已把进攻方向统一,有的按主客队翻转,需先标准化。
  2. 定位球是否计入:角球、任意球常被单独剔除,否则会拉低成功率。
  3. 传中是否计入:传中成功率天然低,是否算“传球”要看口径。
  4. 样本量:单场进攻三区传球可能只有 20–60 次,按球员分组后样本更小,建议多场累计。
  5. “成功”定义:StatsBomb 里 outcome 缺失=成功;Opta 里 outcome=1=成功,别搞反。

典型数值参考

  • 全队进攻三区传球成功率:65%–80%
  • 顶级中场球员:75%–85%
  • 边锋/前锋:65%–78%
  • 传中占比高的球员:可能低至 55%–65%

如果你告诉我你用的是哪个开源项目(StatsBomb / Wyscout / Metrica / 自建),我可以给你针对该数据集字段名的完整计算脚本,包括坐标翻转、定位球过滤和按球员/球队汇总。

上一篇开源项目统计斜长传精准度如何?

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

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