实用脚本统计关门防守成功几次?

wen 实用脚本 1

本文目录导读:

实用脚本统计关门防守成功几次?

  1. 方案一:如果你有事件记录表(CSV/Excel)
  2. 方案二:如果你只有视频,想人工打点统计
  3. 方案三:如果你的“关门防守”有坐标/轨迹数据

我理解你可能想统计某个比赛/训练视频里“关门防守”成功的次数,但仅凭这句话信息不够:我不知道你的数据格式、”关门防守”的判定标准、以及你希望脚本运行在哪里。

下面给你一个可直接改造的 Python 实用脚本模板,按“事件表”统计关门防守成功次数,你只需要把数据换成你的来源即可。

如果你有事件记录表(CSV/Excel)

假设 CSV 长这样:

time,team,event,result
00:12,A,关门防守,成功
00:35,B,关门防守,失败
01:02,A,关门防守,成功
01:20,A,抢断,成功

脚本:

import pandas as pd
# 1. 读取数据
df = pd.read_csv("events.csv")
# 2. 筛选“关门防守”事件
close_defense = df[df["event"] == "关门防守"]
# 3. 统计成功次数
success_count = (close_defense["result"] == "成功").sum()
# 4. 可选:按球队统计
success_by_team = (
    close_defense[close_defense["result"] == "成功"]
    .groupby("team")
    .size()
)
print(f"关门防守成功总次数: {success_count}")
print("按球队统计:")
print(success_by_team)

运行结果类似:

关门防守成功总次数: 2
按球队统计:
team
A    2
dtype: int64

如果你只有视频,想人工打点统计

这个脚本适合边看视频边按键盘记录:

import time
import csv
records = []
print("按 Enter 记录一次【关门防守成功】,输入 q 回车结束。")
count = 0
while True:
    key = input("记录成功?(Enter/q): ").strip().lower()
    if key == "q":
        break
    count += 1
    records.append({
        "no": count,
        "time": time.strftime("%H:%M:%S"),
        "event": "关门防守",
        "result": "成功"
    })
    print(f"已记录 {count} 次")
with open("close_defense_success.csv", "w", newline="", encoding="utf-8-sig") as f:
    writer = csv.DictWriter(f, fieldnames=["no", "time", "event", "result"])
    writer.writeheader()
    writer.writerows(records)
print(f"总计关门防守成功 {count} 次,已保存到 close_defense_success.csv")

如果你的“关门防守”有坐标/轨迹数据

比如你有球员坐标,想自动判断“两人是否形成关门”,判定逻辑通常要自己定义,

  • 两名防守球员距离小于阈值
  • 进攻球员被夹在两人之间
  • 进攻球员速度下降/丢球

伪代码思路:

def is_close_defense(defender1, defender2, attacker, threshold=2.0):
    # 防守两人距离够近
    d12 = distance(defender1, defender2)
    # 进攻者位于两人连线附近
    d_att_line = point_to_line_distance(attacker, defender1, defender2)
    return d12 < threshold and d_att_line < 1.0
success_count = 0
for frame in frames:
    if is_close_defense(d1, d2, att):
        if possession_lost(att):
            success_count += 1

但这部分需要你的具体数据格式,否则没法写死。


为了给你更准确的脚本,我需要你告诉我 3 件事:

  1. 数据来源:CSV/Excel、视频、坐标轨迹、还是手动打点?
  2. “关门防守成功”的定义:是造成失误、丢球、投篮不中,还是只要形成夹击就算?
  3. 输出要求:只统计总数,还是按球员/球队/时间段统计?

你把这 3 点补充一下,我可以直接给你一份能跑的完整脚本。

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