协防补位成功次数"的Python案例
您的问题比较简短,我理解您想了解如何在Python中统计/分析"协防补位成功次数"这类指标(常见于篮球、足球等体育数据分析,或游戏数据统计)。

由于您没有提供具体的案例代码,我先给您一个通用的Python实现思路,如果您有具体案例可以发给我,我再针对性分析。
典型场景理解
"协防补位成功次数"通常指:
- 当队友被突破/失位时,球员主动补防
- 补防后成功阻止对方进攻(抢断、干扰、造成失误等)
- 记为该球员一次"协防补位成功"
Python 统计示例
示例1:从事件日志中统计
import pandas as pd
# 假设原始数据:每场比赛的防守事件日志
data = {
"player": ["张三", "李四", "张三", "王五", "张三", "李四"],
"event_type": ["协防", "协防", "协防", "单防", "协防", "协防"],
"result": ["成功", "失败", "成功", "成功", "成功", "成功"],
"match_id": [1, 1, 2, 2, 3, 3]
}
df = pd.DataFrame(data)
# 筛选:协防 + 成功
mask = (df["event_type"] == "协防") & (df["result"] == "成功")
success_df = df[mask]
# 按球员统计协防补位成功次数
count = success_df.groupby("player").size().reset_index(name="协防补位成功次数")
print(count)
输出:
player 协防补位成功次数
0 张三 2
1 李四 1
示例2:从追踪数据(位置坐标)判断协防
如果是球员追踪数据(如SportVU、Catapult),需要先定义"协防"规则:
import pandas as pd
import numpy as np
# 简化:每帧记录球员位置 + 是否持球人
# 定义协防:非对位球员距离持球人 < 2米 且 原对位人失位
def is_help_defense(ball_handler_pos, defender_pos,
on_ball_defender_pos, help_radius=2.0):
d_help = np.linalg.norm(np.array(defender_pos) - np.array(ball_handler_pos))
d_onball = np.linalg.norm(np.array(on_ball_defender_pos) - np.array(ball_handler_pos))
# 补防者接近持球人,且比原防守人更近
return d_help < help_radius and d_help < d_onball
# 成功判定:补防后回合未得分 / 造成失误
示例3:游戏/篮球比赛统计表
players = {
"张三": {"协防次数": 10, "协防成功": 7},
"李四": {"协防次数": 8, "协防成功": 5},
"王五": {"协防次数": 6, "协防成功": 3},
}
for name, stat in players.items():
rate = stat["协防成功"] / stat["协防次数"]
print(f"{name}: 成功 {stat['协防成功']} 次, 成功率 {rate:.1%}")
需要您补充的信息
为了给您精准的案例代码,请告诉我:
- 数据来源:Excel / CSV / 数据库 / 视频追踪 / 游戏日志?
- 字段结构:有哪些列?(如 player, event, result, timestamp...)
- 成功判定规则:什么算"协防"、什么算"成功"?
- 输出形式:汇总表、可视化图表、还是导出报表?
如果您有具体的案例代码或截图,直接贴上来,我帮您逐行分析并给出"协防补位成功次数"的计算结果 ✅