本文目录导读:

“脚后跟传球成功几次”这种统计,不是靠一个通用脚本就能凭空算出来的,它依赖你手上的数据源,不同数据源能支持的统计粒度差别很大,下面我给你一个可落地的判断 + 脚本框架,你按自己的数据情况套用即可。
先判断你的数据属于哪一类
A. 事件级数据(最理想)
Opta / StatsBomb / Wyscout / 自有标注数据,事件里有:
- 传球事件
- 传球部位/技术字段(如
pass_body_part = heel或pass_technique = backheel) - 成功/失败字段
✅ 这种情况可以直接用脚本统计。
B. 视频数据(最麻烦)
只有比赛视频,没有事件标签。 ❌ 不能靠简单脚本统计,需要:
- 目标检测 + 姿态估计 + 球轨迹跟踪
- 或人工标注 这不是“实用脚本”能解决的,成本很高。
C. 只有统计表/文字直播
比如只有“传球成功率”这种汇总数据。 ❌ 无法统计脚后跟传球,因为粒度不够。
如果你有事件级数据:Python 脚本模板
假设你的数据是 DataFrame,列名类似:
playerevent_type(pass)pass_body_part(heel)pass_outcome(complete / incomplete)
import pandas as pd
# 读取数据
df = pd.read_csv("events.csv")
# 筛选:传球 + 脚后跟
heel_passes = df[
(df["event_type"] == "pass") &
(df["pass_body_part"].str.lower() == "heel")
]
# 统计成功次数
successful_heel_passes = heel_passes[
heel_passes["pass_outcome"].str.lower() == "complete"
]
# 按球员统计
result = (
successful_heel_passes
.groupby("player")
.size()
.reset_index(name="successful_heel_passes")
.sort_values("successful_heel_passes", ascending=False)
)
print(result)
如果你要统计全队总数:
total = len(successful_heel_passes)
print("脚后跟传球成功次数:", total)
关键坑点(很容易错)
-
“脚后跟”字段不一定叫 heel
有的数据叫backheel、heel_pass、technique=backheel,要先看数据字典。 -
成功定义要统一
是“传给队友”算成功,还是“队友接到且没丢”算成功?不同数据源定义不同。 -
脚后跟传球可能被归到“其他部位”
部分数据源只标foot,不细分脚跟,那就统计不了。 -
不要用传球成功率反推次数
成功率是比例,反推会因四舍五入出错。
如果你没有事件数据,实用替代方案
- 人工标注小样本:选几场,用视频逐次标“脚后跟传球 + 成功/失败”,算场均。
- 用现成平台筛选:StatsBomb IQ、Wyscout、SofaScore 部分赛事有技术动作筛选。
- 简化目标:只统计“脚后跟传球次数”,不区分成功,人工看视频更快。
- 有事件级数据 + 部位字段:上面脚本直接能用,改列名即可。
- 只有视频:别指望通用脚本,需要标注或计算机视觉方案。
- 只有汇总统计:统计不了。
如果你告诉我你的数据长什么样(列名/来源/是否有部位字段),我可以帮你把脚本改成直接可跑的版本。