本文目录导读:

要回答这个问题,需要先明确你问的是哪个开源项目,因为在足球数据分析领域,不同的开源项目(如 StatsBomb、PySport、SoccerAction 等)对“横传转移球”的定义和统计方式差异很大。
我可以给你一个最可能符合你需求的答案,并说明如何找到它。
最可能的答案:StatsBomb 开源数据(免费)
如果你指的是公开的、免费的足球事件数据,最著名的开源数据集是 StatsBomb Open Data(托管在 GitHub 上)。
- 它是否显示横传转移球? 是的,可以统计,但需要自己计算。 StatsBomb 的数据中有一个
pass(传球)事件,里面包含一个字段叫pass.end_location(传球结束坐标) 和pass.angle(传球角度)。 - 如何定义横传转移? 开源项目本身不直接给出“横向转移”这个标签,但社区通常通过传球角度或X轴(球场纵向)坐标变化来判断:
- 横传(Square Pass):传球前后 X 坐标变化很小(比如小于 5 米),但 Y 坐标(横向)变化很大。
- 转移(Switch of Play):通常指从球场一侧传向另一侧,且 Y 坐标变化超过 30-40 米的长传。
- 在哪看? 你需要在 GitHub 上搜索
StatsBomb Open Data,下载 JSON 文件后,使用 Python 的pandas库筛选type.name == "Pass"的数据,然后自己编写几行代码计算角度和距离。
如果是特定的可视化网页项目
如果你说的“开源项目”指的是某个前端可视化仪表盘(比如在 GitHub 上找到的 React/Vue 足球分析面板):
- 有的有,有的没有。 很多业余开源项目只显示射门和进球数据,不包含高级的传球方向统计,但如果项目使用了 StatsBomb 或 Wyscout 数据,通常会在“传球网络图”(Pass Network)中,用连线的粗细和颜色来体现横向转移和直塞。
- 建议:直接查看该项目的 README.md 文件,搜索关键词
switch(转移)或square(横传)。
如何自己快速验证(通用方法)
如果你已经下载了某个开源数据集(以 StatsBomb 为例),可以用以下逻辑筛选:
import pandas as pd
# 假设 df 是传球事件表,包含 x, y, end_x, end_y
df['delta_x'] = abs(df['end_x'] - df['x']) # 纵向距离
df['delta_y'] = abs(df['end_y'] - df['y']) # 横向距离
# 横传转移:纵向推进很少(小于2米),但横向跨度很大(大于20米)
switch_passes = df[(df['delta_x'] < 2) & (df['delta_y'] > 20)]
print(f"找到 {len(switch_passes)} 次横传转移球")
如果指的不是足球
如果你问的是软件工程里的“横传转移球次数”(Git 分支合并次数),那答案完全不同,但在足球语境下,请按上文理解。
总结建议:
- 如果是看 StatsBomb,答案是有数据,但需要代码筛选(开源代码通常不直接打印这个数字)。
- 如果是看某个现成的开源网站,建议你告诉我是哪个项目的名字,我帮你查它的字段定义。
如果你能补充一下项目的名称或链接,我可以给你更精确的字段名和示例代码。