本文目录导读:

在足球数据分析(尤其基于开源项目如 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) | 不直接提供 | 需从事件数据算 |
常见坑
- 坐标方向不统一:有的项目已把进攻方向统一,有的按主客队翻转,需先标准化。
- 定位球是否计入:角球、任意球常被单独剔除,否则会拉低成功率。
- 传中是否计入:传中成功率天然低,是否算“传球”要看口径。
- 样本量:单场进攻三区传球可能只有 20–60 次,按球员分组后样本更小,建议多场累计。
- “成功”定义:StatsBomb 里
outcome缺失=成功;Opta 里outcome=1=成功,别搞反。
典型数值参考
- 全队进攻三区传球成功率:65%–80%
- 顶级中场球员:75%–85%
- 边锋/前锋:65%–78%
- 传中占比高的球员:可能低至 55%–65%
如果你告诉我你用的是哪个开源项目(StatsBomb / Wyscout / Metrica / 自建),我可以给你针对该数据集字段名的完整计算脚本,包括坐标翻转、定位球过滤和按球员/球队汇总。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播