统计挑球过人次数
你想统计挑球过人(也叫"挑球过顶"、"挑传过人",英文 chip/lob over defender)的次数——这需要先明确数据来源,因为不同场景脚本写法完全不同。

先确认你的数据源
| 场景 | 可用数据 | 脚本思路 |
|---|---|---|
| 足球游戏(FIFA/PES/eFootball) | 游戏日志、API、录屏 | 解析事件日志 / 图像识别 |
| 真实比赛视频 | 录像 | CV 检测(难度大,需标注) |
| 赛事数据平台(Opta/SofaScore) | 结构化 JSON/CSV | 过滤事件类型字段 |
| 自己踢球录像 | 视频 | 人工标注 + 脚本计数 |
如果你有结构化数据(最常见)
假设你有类似这样的比赛事件 CSV/JSON:
{"minute": 23, "player": "梅西", "event": "take_on", "type": "chip", "success": true}
{"minute": 45, "player": "姆巴佩", "event": "take_on", "type": "knock", "success": false}
Python 统计脚本
import pandas as pd
# 读取数据(CSV 或 JSON 都行)
df = pd.read_json("match_events.json", lines=True)
# df = pd.read_csv("match_events.csv")
# 筛选"挑球过人"事件
chip_dribbles = df[
(df["event"] == "take_on") &
(df["type"].str.contains("chip|lob", case=False, na=False))
]
# ---- 输出统计 ----
total = len(chip_dribbles)
success = chip_dribbles["success"].sum()
rate = success / total * 100 if total else 0
print(f"挑球过人总次数: {total}")
print(f"成功次数: {success}")
print(f"成功率: {rate:.1f}%")
# 按球员统计
print("\n各球员挑球过人次数:")
print(chip_dribbles.groupby("player").size().sort_values(ascending=False))
# 按时间段统计(每15分钟)
chip_dribbles = chip_dribbles.copy()
chip_dribbles["period"] = (chip_dribbles["minute"] // 15) * 15
print("\n各时段分布:")
print(chip_dribbles.groupby("period").size())
判断"多不多":可以加一个基准对比:
# 与该球员所有过人方式对比
all_dribbles = df[df["event"] == "take_on"]
chip_ratio = total / len(all_dribbles) * 100
print(f"\n挑球过人占全部过人的比例: {chip_ratio:.1f}%")
# 经验基准(可自行调整)
if chip_ratio > 15:
print("→ 挑球过人使用频率:偏高 ✅")
elif chip_ratio > 8:
print("→ 挑球过人使用频率:正常")
else:
print("→ 挑球过人使用频率:偏低")
如果是录屏/视频(CV 方案)
这个复杂得多,需要:
- 目标检测:YOLO 检测球员和球
- 轨迹分析:判断球是否"抛物线越过防守球员头顶"
- 过人判定:球落点后进攻方先触球
简化版伪代码:
import cv2
from ultralytics import YOLO
model = YOLO("yolov8n.pt") # 需自定义训练识别足球
cap = cv2.VideoCapture("match.mp4")
chip_count = 0
ball_trajectory = []
while cap.isOpened():
ret, frame = cap.read()
if not ret: break
results = model(frame)
# 提取球坐标,判断是否出现"高抛物线+越过防守球员"模式
# ...(需业务逻辑判定)
# if is_chip_over_defender(ball_trajectory):
# chip_count += 1
print(f"检测到挑球过人: {chip_count} 次")
⚠️ 视频方案准确率依赖标注数据和判定规则,实际比赛建议半自动(脚本初筛+人工复核)。
告诉我更多,我给你精准脚本
请补充:
- 数据从哪来?(游戏日志 / 视频 / 网站 / 手动记录)
- 数据格式长什么样?(贴一小段样例)
- "多不多"的对比标准是什么?(和谁比、和什么赛事比)
- 想要什么输出?(单场统计 / 赛季汇总 / 可视化图表)
给我这些,我可以直接给你能跑的完整脚本。