实用脚本统计挑球过人次数多不多?

wen 实用脚本 2

统计挑球过人次数

你想统计挑球过人(也叫"挑球过顶"、"挑传过人",英文 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 方案)

这个复杂得多,需要:

  1. 目标检测:YOLO 检测球员和球
  2. 轨迹分析:判断球是否"抛物线越过防守球员头顶"
  3. 过人判定:球落点后进攻方先触球

简化版伪代码:

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} 次")

⚠️ 视频方案准确率依赖标注数据和判定规则,实际比赛建议半自动(脚本初筛+人工复核)。


告诉我更多,我给你精准脚本

请补充:

  1. 数据从哪来?(游戏日志 / 视频 / 网站 / 手动记录)
  2. 数据格式长什么样?(贴一小段样例)
  3. "多不多"的对比标准是什么?(和谁比、和什么赛事比)
  4. 想要什么输出?(单场统计 / 赛季汇总 / 可视化图表)

给我这些,我可以直接给你能跑的完整脚本。

抱歉,评论功能暂时关闭!