实用脚本统计区域防守漏洞出现几次?

wen 实用脚本 2

本文目录导读:

实用脚本统计区域防守漏洞出现几次?

  1. 场景一:从视频/直播的文本记录(如解说词、赛后报告)中统计关键词次数
  2. 场景二:从结构化的赛事数据(Excel/CSV)中统计
  3. 场景三:从比赛录像的帧/事件日志(JSON)中统计
  4. 如何选择脚本?

要统计“区域防守漏洞”出现的次数,需要先明确“漏洞”的定义(是传球被断、漏人、被打穿,还是某个关键词)以及数据的来源(是文本记录、视频标签还是数据库)。

由于你没有提供具体的数据文件,我给你提供三个最常用场景的实用脚本(Python),你可以根据手头的数据类型直接套用。

从视频/直播的文本记录(如解说词、赛后报告)中统计关键词次数

适用情况:你有一段从转播字幕或球探报告中复制下来的文字,想统计“防守漏洞”、“漏人”、“失位”、“被打穿”等词出现的频率。

# -*- coding: utf-8 -*-
"""
脚本名称:区域防守漏洞关键词统计器
功能:统计一段文本中,描述防守漏洞的各种同义词出现的总次数。
"""
import re
from collections import Counter
def count_defensive_lapses(text, keywords=None):
    """
    统计防守漏洞关键词出现次数
    :param text: 输入的文本字符串
    :param keywords: 关键词列表,如果不提供则使用默认内置词库
    """
    if keywords is None:
        keywords = [
            "防守漏洞", "漏人", "失位", "被打穿", "防线缺口",
            "空当", "漏防", "盯人不紧", "身后球", "被打身后"
        ]
    # 初始化计数器
    total_count = 0
    keyword_stats = Counter()
    # 将文本转换为小写(如果关键词是英文)
    text_lower = text.lower()
    # 逐词统计
    for kw in keywords:
        kw_lower = kw.lower()
        # 使用 re.findall 来统计所有出现次数(非重叠)
        count = len(re.findall(re.escape(kw_lower), text_lower))
        if count > 0:
            keyword_stats[kw] = count
            total_count += count
    return total_count, keyword_stats
# ---------- 使用示例 ----------
if __name__ == "__main__":
    # 模拟一段球探报告文本
    sample_text = """
    第23分钟,对方边锋突破,**防守漏洞**暴露,中卫失位导致射门。
    第45分钟,再次出现**漏人**现象,前点**漏人**造成丢球。
    下半场,球队整体阵型前压,**被打穿**两次,防线**被打穿**的问题严重。
    终场前,**防守漏洞**再一次显现,**失位**后补防不及。
    """
    total, stats = count_defensive_lapses(sample_text)
    print(f"总漏洞次数: {total} 次")
    print("明细统计:")
    for kw, c in stats.items():
        print(f"  - {kw}: {c} 次")

从结构化的赛事数据(Excel/CSV)中统计

适用情况:你有一张表(match_events.csv),里面有“事件类型”列(包含了“防守漏洞”记录),或者有“区域”列(如:A区、B区)和“是否漏洞”列,你想统计某个特定区域在多少场比赛里出现了漏洞。

# -*- coding: utf-8 -*-
"""
脚本名称:CSV数据漏洞统计器
功能:读取CSV文件,筛选出标记为“防守漏洞”的事件,按区域分组统计次数。
前提:CSV文件中有一列叫 'event_type'(值为 'defensive_lapse')和一列叫 'zone'。
"""
import pandas as pd
def analyze_csv(file_path, event_column='event_type', zone_column='zone', lapse_value='defensive_lapse'):
    """
    从CSV文件中统计每个区域的防守漏洞次数
    :param file_path: CSV文件路径
    :param event_column: 事件类型列名
    :param zone_column: 区域列名
    :param lapse_value: 表示漏洞的特定值(如 '漏洞' 或 'lapse')
    """
    # 读取文件(请根据实际分隔符修改 sep 参数)
    df = pd.read_csv(file_path)
    # 筛选出漏洞事件
    lapses_df = df[df[event_column] == lapse_value]
    # 如果确实有区域列,则按区域统计
    if zone_column in df.columns:
        result = lapses_df[zone_column].value_counts().reset_index()
        result.columns = [zone_column, '漏洞次数']
        total = result['漏洞次数'].sum()
        return total, result
    else:
        # 没有区域列,只返回总数
        return len(lapses_df), None
# ---------- 使用示例 ----------
if __name__ == "__main__":
    # 假设你的文件是 'match_data.csv'
    try:
        total, zone_stats = analyze_csv('match_data.csv')
        print(f"总漏洞次数: {total}")
        if zone_stats is not None:
            print("各区域漏洞分布:")
            print(zone_stats.to_string(index=False))
    except FileNotFoundError:
        print("错误:找不到该CSV文件,请检查文件路径。")

从比赛录像的帧/事件日志(JSON)中统计

适用情况:如果你在做视频分析,导出的数据是JSON格式,每个“防守漏洞”都是一个独立事件对象,里面含有位置(x,y坐标)或时间段,可以统计在一场比赛中漏洞发生的频次以及密集时间段。

# -*- coding: utf-8 -*-
"""
脚本名称:JSON事件日志漏洞频次统计
功能:解析JSON事件列表,统计防守漏洞事件总数,并找出发生次数最多的上半场/下半场。
"""
import json
from collections import Counter
def analyze_json_events(json_file_path):
    """
    :param json_file_path: JSON文件路径,格式为 [{"type": "lapse", "minute": 23}, ...]
    """
    with open(json_file_path, 'r', encoding='utf-8') as f:
        events = json.load(f)
    # 筛选出类型为 'lapse' 的事件(可以根据你的数据调整字段名)
    lapses = [ev for ev in events if ev.get('type') == 'lapse']
    # 按分钟统计次数(用于找密集爆发期)
    minute_counter = Counter()
    for lapse in lapses:
        minute = lapse.get('minute', 0)
        minute_counter[minute] += 1
    # 按时间段划分(上半场1-45分钟,下半场46-90分钟)
    first_half = sum(v for k, v in minute_counter.items() if k <= 45)
    second_half = sum(v for k, v in minute_counter.items() if k > 45)
    # 找出单分钟发生最多的时段
    peak_minute = minute_counter.most_common(1)[0] if minute_counter else (0, 0)
    return {
        "总漏洞次数": len(lapses),
        "上半场次数": first_half,
        "下半场次数": second_half,
        "漏洞最集中的分钟": f"第{peak_minute[0]}分钟 (发生{peak_minute[1]}次)"
    }
# ---------- 使用示例 ----------
if __name__ == "__main__":
    # 模拟数据
    result = analyze_json_events('events.json')
    for key, value in result.items():
        print(f"{key}: {value}")

如何选择脚本?

你的场景 推荐脚本
有文字报告/解说词 场景一(关键词统计)
有一张电子表格(Excel/CSV) 场景二(Pandas统计)
有程序化的比赛事件数据(JSON) 场景三(结构化统计)

如果你有具体的文件格式(比如一张截图或CSV表头),可以发给我,我帮你改造成直接可用的代码。

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