本文目录导读:

- 方案一:基于“文本日志”的简易统计(使用 Python)
- 方案二:基于“结构化表格数据”(使用 Python + Pandas)
- 方案三:数据库 SQL 统计(适用于 MySql / PostgreSQL)
- 温馨提示:如何定义“成功”?
要统计“关门防守”成功次数,首先需要明确“关门防守”在数据上的定义,在篮球或足球统计中,通常指防守方在对手进行突破或切入时,两名防守球员同时收缩夹击,迫使对手失误、投篮不中或传球失误。
由于你没有提供具体的数据格式(如数据库表、CSV文件或比赛日志),我为你编写了三种最实用的脚本方案,覆盖了最常见的统计场景,你可以根据自己的数据情况选择使用。
基于“文本日志”的简易统计(使用 Python)
适用场景:你的数据是比赛文字直播或人工记录的行文本,
12:30 对手突破,A球员和B球员关门防守,对手失误
12:45 对手突破,防守球员未能关门,对手上篮得分
13:00 对手突破,C球员和D球员关门防守,对手投篮不中
脚本逻辑:通过关键词匹配(如“关门防守”+“失误”/“不中”/“抢断”)来计算成功次数。
import re
def count_closing_defense_success(file_path):
"""
统计文本日志中关门防守成功的次数。
判定标准:日志行中包含“关门”且包含(“失误”或“不中”或“抢断”或“封盖”)。
"""
success_keywords = ['失误', '不中', '抢断', '封盖', '24秒违例']
success_count = 0
total_closing = 0
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
if '关门' in line:
total_closing += 1
# 检查是否成功
if any(keyword in line for keyword in success_keywords):
success_count += 1
print(f"[成功] {line.strip()}")
else:
print(f"[失败/未定] {line.strip()}")
print(f"\n总计关门防守次数: {total_closing}")
print(f"关门防守成功次数: {success_count}")
print(f"成功率: {success_count/total_closing:.1%}" if total_closing > 0 else "无数据")
return success_count
# 使用方法
if __name__ == "__main__":
# 假设你的日志文件叫 game_log.txt
count_closing_defense_success('game_log.txt')
基于“结构化表格数据”(使用 Python + Pandas)
适用场景:你的数据是 Excel 或 CSV,每一行代表一次防守回合,且有具体的防守类型和防守结果列。
假设数据格式(CSV示例):
| 时间 | 防守类型 | 防守人1 | 防守人2 | 防守结果 |
|---|---|---|---|---|
| 12:30 | 关门 | A | B | 对手失误 |
| 12:45 | 包夹 | C | D | 对手得分 |
| 13:00 | 关门 | E | F | 投篮不中 |
脚本逻辑:筛选 防守类型 为“关门”,且 防守结果 属于成功结果的条目。
import pandas as pd
def count_success_from_csv(csv_path):
# 读取数据
df = pd.read_csv(csv_path, encoding='utf-8')
# 筛选出所有关门防守的记录
closing_df = df[df['防守类型'] == '关门']
# 定义成功的结果类型(根据你的实际字段值调整)
success_results = ['对手失误', '投篮不中', '抢断', '盖帽', '24秒违例']
# 统计成功次数
success_df = closing_df[closing_df['防守结果'].isin(success_results)]
print(f"关门防守总次数: {len(closing_df)}")
print(f"关门防守成功次数: {len(success_df)}")
print(f"成功率: {len(success_df)/len(closing_df):.1%}" if len(closing_df) > 0 else "无记录")
# 查看具体成功明细
print("\n成功明细:")
print(success_df[['时间', '防守人1', '防守人2', '防守结果']].to_string(index=False))
return len(success_df)
# 使用方法
if __name__ == "__main__":
count_success_from_csv('defensive_stats.csv')
数据库 SQL 统计(适用于 MySql / PostgreSQL)
适用场景:数据存在数据库的 defensive_actions 表中。
表结构示例:
CREATE TABLE defensive_actions (
id INT PRIMARY KEY,
game_time VARCHAR(10),
action_type VARCHAR(20), -- 如 '关门', '包夹'
result VARCHAR(20), -- 如 '对手失误', '投篮不中', '对手得分'
defender1 VARCHAR(20),
defender2 VARCHAR(20)
);
SQL 统计语句:
SELECT
COUNT(*) AS 总关门次数,
SUM(CASE WHEN result IN ('对手失误', '投篮不中', '抢断', '盖帽', '24秒违例')
THEN 1 ELSE 0 END) AS 成功次数,
ROUND(
SUM(CASE WHEN result IN ('对手失误', '投篮不中', '抢断', '盖帽', '24秒违例')
THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 1
) AS 成功率
FROM defensive_actions
WHERE action_type = '关门';
温馨提示:如何定义“成功”?
为了让脚本更准确地工作,你需要先确定你的具体标准。“关门防守成功” 指的是通过关门破坏了对方进攻,包括以下五种情况的一种:
- 迫使对方失误(传球失误、运球失误、走步)
- 迫使对方投篮不中(特别是仓促出手)
- 直接完成抢断
- 造成封盖
- 迫使对方24秒进攻违例或8秒后场违例
如果某次关门导致对方犯规(防守犯规)或对方依然得分,则不算成功。
请告诉我你的数据是什么样的(是文本、Excel还是数据库)? 如果你提供样例数据,我可以直接为你写出完全匹配的脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播