如何用数据脚本对比两队边路突破能力
想看两队边路突破能力对比,核心是把“边路突破”拆成可量化的指标,再用脚本抓取/计算,下面给一套实用思路和示例代码。

先定义指标(拆解“边路突破能力”)
| 维度 | 具体指标 | 数据来源 |
|---|---|---|
| 突破量 | 边路成功过人次数、边路带球推进次数 | Opta/StatsBomb/FBref |
| 突破效率 | 边路过人成功率、每90分钟边路过人 | 同上 |
| 威胁产出 | 边路传中次数/成功率、边路创造射门、下底传中 | 同上 |
| 空间占据 | 边路触球占比、边路进攻三区触球 | 事件数据坐标 |
| 对抗 | 边路1v1成功、被犯规次数 | 事件数据 |
关键:用事件数据的坐标把“边路”筛出来(一般 x 靠近边线、y 在两侧区域),再统计过人/传中事件。
脚本实现思路(Python 示例)
用 StatsBomb 开放数据(免费)做事件筛选
import pandas as pd
from statsbombpy import sb
# 取一场比赛事件
events = sb.events(match_id=3788741) # 示例 match_id
# 筛选过人事件,并按坐标判断是否在边路
def is_wide(loc, pitch_width=80, wide_ratio=0.25):
if not isinstance(loc, list): return False
y = loc[1]
return y < pitch_width*wide_ratio or y > pitch_width*(1-wide_ratio)
dribbles = events[events['type'] == 'Dribble'].copy()
dribbles['wide'] = dribbles['location'].apply(is_wide)
dribbles['success'] = dribbles['dribble_outcome'] == 'Complete'
# 按球队汇总边路突破
summary = dribbles[dribbles['wide']].groupby('team').agg(
wide_dribbles=('success', 'size'),
wide_success=('success', 'sum'),
success_rate=('success', 'mean')
).reset_index()
print(summary)
加传中与推进,形成“边路突破综合评分”
# 传中事件(Cross)
crosses = events[events['type'] == 'Pass']
crosses = crosses[crosses['pass_type'] == 'Cross']
crosses['wide'] = crosses['location'].apply(is_wide)
cross_summary = crosses[crosses['wide']].groupby('team').agg(
wide_crosses=('id', 'size')
).reset_index()
# 合并
final = summary.merge(cross_summary, on='team', how='left').fillna(0)
# 简单加权评分(可按需调整权重)
final['wide_break_score'] = (
final['wide_success']*1.0 +
final['wide_crosses']*0.5 +
final['success_rate']*10
)
print(final.sort_values('wide_break_score', ascending=False))
可视化对比
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 3, figsize=(12,4))
for i, col in enumerate(['wide_success','wide_crosses','success_rate']):
final.plot.bar(x='team', y=col, ax=ax[i], legend=False)
ax[i].set_title(col)
plt.tight_layout()
plt.show()
实操要点
- 坐标要归一化:不同数据源场地尺寸不同(StatsBomb 120×80,Opta 100×100),先统一再判边路。
- 区分左右边:可按 y 值再拆 left/right,看球队是否偏一侧突破。
- 样本量:单场噪声大,建议按赛季或近 N 场聚合,用每90分钟标准化。
- 成功率要加样本门槛:过人次数太少时成功率不可靠,可设
min_dribbles >= 20。 - 数据源选择:
- 免费:StatsBomb 开放数据、FBref(部分)
- 付费:Opta、Wyscout、StatsBomb 全量
- 权重可调:突破量 vs 效率 vs 威胁产出,按你关注点调评分公式,避免“拍脑袋”。
一句话总结
脚本 = 事件数据筛边路坐标 → 统计过人/传中量与成功率 → 加权评分 → 可视化对比,先把指标定义清楚,脚本只是流水线,权重和边路阈值才是分析质量的关键。
需要的话我可以帮你写一个适配具体数据源(Opta/Wyscout/FBref CSV)的完整脚本模板。