本文目录导读:

要制作一个“人盯人防守成功率”的实用脚本,首先需要明确数据来源和判定逻辑。
在真实篮球/足球比赛中,“人盯人防守成功”通常定义为:防守者在场上对位期间,进攻者未得分、未助攻、未造成犯规,且防守者完成了抢断、盖帽或迫使对方失误/投篮不中。
由于无法直接接入实时比赛数据(如NBA API),下面提供一个基于Python的可模拟数据脚本,它适用于教练分析赛后录像数据或游戏数据复盘。
你可以输入防守者、进攻者的每次交锋结果,脚本会自动计算成功率。
Python 命令行脚本(最实用,可扩展)
这个脚本会创建一个数据结构来记录每次单防回合,并统计成功率、场均失分等关键指标。
# -*- coding: utf-8 -*-
"""
人盯人防守成功率分析脚本
功能:记录对位回合,计算防守效率指标
适用于:篮球/足球个人防守数据复盘
"""
import pandas as pd
from datetime import datetime
class DefenderStats:
def __init__(self, defender_name):
self.defender = defender_name
self.defensive_actions = [] # 存储每个防守回合
def add_action(self, opponent, outcome, points_allowed=0, is_shot_attempt=True):
"""
记录一个防守对位回合
参数:
opponent: 进攻球员名称
outcome: 防守结果 (关键判定)
'STOP' -> 防守成功 (抢断、盖帽、迫使失误、投篮打铁+防守篮板)
'SCORE' -> 防守失败 (对手得分)
'FOUL' -> 防守失败 (犯规,且对方罚球得分)
'ASSIST' -> 防守失败 (对手助攻队友得分,且该防守者是主要对位人)
points_allowed: 本次防守失分 (0, 2, 3, 1)
is_shot_attempt: 是否是一次投篮/上篮对抗
"""
action = {
'time': datetime.now().strftime("%H:%M:%S"),
'opponent': opponent,
'outcome': outcome,
'points_allowed': points_allowed,
'is_shot_attempt': is_shot_attempt
}
self.defensive_actions.append(action)
def calculate_success_rate(self):
"""
计算防守成功率
公式: 成功回合数 / 总防守回合数
"""
if not self.defensive_actions:
return 0.0, 0
total_actions = len(self.defensive_actions)
# 防守成功判定:仅当 outcome 为 'STOP'
successful_stops = sum(1 for a in self.defensive_actions if a['outcome'] == 'STOP')
# 额外指标:被投篮命中率(防投篮时)
shot_actions = [a for a in self.defensive_actions if a['is_shot_attempt']]
if shot_actions:
fg_made = sum(1 for a in shot_actions if a['outcome'] == 'SCORE')
fg_pct = fg_made / len(shot_actions)
else:
fg_pct = 0.0
# 每次防守失分
total_points = sum(a['points_allowed'] for a in self.defensive_actions)
success_rate = (successful_stops / total_actions) * 100
return {
'success_rate': round(success_rate, 1),
'total_possessions': total_actions,
'stops': successful_stops,
'opp_fg_pct': round(fg_pct, 3),
'points_allowed_per_poss': round(total_points / total_actions, 2)
}
def print_report(self):
stats = self.calculate_success_rate()
print(f"\n=== 防守报告: {self.defender} ===")
print(f"总对位回合: {stats['total_possessions']}")
print(f"防守成功次数: {stats['stops']}")
print(f"人盯人防守成功率: {stats['success_rate']}%")
print(f"对手投篮命中率: {stats['opp_fg_pct']:.1%}")
print(f"每回合失分: {stats['points_allowed_per_poss']}")
print("-" * 30)
# ========== 使用示例 (模拟一场比赛数据) ==========
if __name__ == "__main__":
# 创建防守球员 ( 卡鲁索)
caruso = DefenderStats("Caruso")
# 模拟进攻回合数据: (对手, 结果, 失分, 是否投篮)
# 'STOP' = 防守成功 | 'SCORE' = 对手命中 | 'FOUL' = 犯规
data = [
("Mitchell", 'STOP', 0, True), # 成功防下投篮
("Mitchell", 'SCORE', 2, True), # 被投进2分
("Sexton", 'STOP', 0, True), # 抢断
("Markkanen", 'FOUL', 2, True), # 犯规送罚球(算失分)
("Mitchell", 'STOP', 0, True), # 迫使打铁
("Sexton", 'SCORE', 3, True), # 被投进3分
("Markkanen", 'STOP', 0, False), # 防下无球跑位
]
for opp, out, pts, shot in data:
caruso.add_action(opp, out, pts, shot)
# 输出报告
caruso.print_report()
Excel 表格公式版(适合不懂代码的教练)
如果你只需要一个手动录入表格,可以用 Excel 或 腾讯文档:
- 建立列:
回合编号|防守人|进攻人|结果(下拉选择:成功/失败/犯规) |失分|投篮否 - 计算公式:
- 成功率 =
COUNTIF(D:D,"成功") / COUNTA(D:D) - 限制对手命中率 =
SUMPRODUCT((E:E>0)*1) / SUMPRODUCT((F:F="是")*1)
- 成功率 =
命令行一键统计(极简版)
如果你在录像分析时使用 obs 或 录屏软件,只想快速打点,可以用这个精简版:
# 极简:在终端直接输入结果,输入 q 退出
stop_count = 0
fail_count = 0
while True:
result = input("输入结果 (s=成功防下, f=被得分, q=退出): ").strip().lower()
if result == 'q':
break
elif result == 's':
stop_count += 1
elif result == 'f':
fail_count += 1
else:
print("无效输入,请输入 s/f")
total = stop_count + fail_count
if total > 0:
rate = (stop_count / total) * 100
print(f"\n终结统计: 总回合 {total}, 成功 {stop_count}, 失败 {fail_count}")
print(f"人盯人防守成功率: {rate:.1f}%")
else:
print("无数据")
如何定义“成功”?—— 这是核心
在脚本中,STOP(成功)是根据现代篮球防守数据(Defensive Dashboard)定义的,它包含以下四种情况之一:
- 直接抢断或盖帽,且球权发生转换。
- 迫使对手投篮不中,并且防守方控制住篮板。
- 迫使对手失误(进攻犯规、走步、传球出界),但过程中防守者没有犯规。
- 对手在严密防守下投篮不中(无论是否投篮,只要没进且没造成罚球,就算成功)。
注意:如果犯规了,即便对手投篮不进,也算作防守失败,因为给了对方罚球机会。
如何使用并扩展?
- 替换数据:将
data数组内的模拟数据替换为你实际比赛中的对位记录。 - 增强维度:可以添加
position(防守位置)、pick_and_roll(挡拆)等字段,分析不同场景下的防守效率。 - 可视化:可以用
matplotlib画出雷达图,对比不同球员的防守成功率。
如果你有具体的数据文件(如 CSV 或数据库导出),把文件格式贴出来,我可以帮你把脚本改成直接读取文件的版本。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播