python案例统计假动作晃过防守几次?

wen python案例 2

Python案例:统计假动作晃过防守次数

下面我用一个模拟篮球比赛数据的案例,演示如何统计球员使用假动作(如"拜佛""变向""后撤步"等)晃过防守的次数。

python案例统计假动作晃过防守几次?

需求场景

假设我们有一段比赛事件日志,每条记录包含:

  • 时间
  • 球员
  • 动作类型
  • 是否成功晃过防守

目标:统计每名球员"假动作成功晃过防守"的次数。

示例代码

import pandas as pd
# 1. 模拟比赛事件数据(可替换为真实日志/CSV)
data = [
    {"time": "Q1-08:30", "player": "库里",   "action": "拜佛",     "beat_defender": True},
    {"time": "Q1-07:55", "player": "库里",   "action": "投篮",     "beat_defender": False},
    {"time": "Q1-06:20", "player": "哈登",   "action": "后撤步",   "beat_defender": True},
    {"time": "Q1-05:10", "player": "哈登",   "action": "变向",     "beat_defender": True},
    {"time": "Q2-09:00", "player": "库里",   "action": "变向",     "beat_defender": True},
    {"time": "Q2-08:15", "player": "东契奇", "action": "拜佛",     "beat_defender": True},
    {"time": "Q2-07:40", "player": "东契奇", "action": "后撤步",   "beat_defender": False},
    {"time": "Q2-06:05", "player": "哈登",   "action": "拜佛",     "beat_defender": False},
    {"time": "Q3-10:00", "player": "库里",   "action": "拜佛",     "beat_defender": True},
]
df = pd.DataFrame(data)
# 2. 定义哪些属于"假动作"
fake_moves = ["拜佛", "变向", "后撤步", "假投", "假传", "犹豫步"]
# 3. 筛选出 假动作 + 晃过防守 的记录
fake_success = df[
    df["action"].isin(fake_moves) & (df["beat_defender"] == True)
]
# 4. 按球员统计次数
count_by_player = (
    fake_success.groupby("player")
    .size()
    .reset_index(name="假动作晃过防守次数")
    .sort_values("假动作晃过防守次数", ascending=False)
)
print("== 假动作晃过防守统计 ==")
print(count_by_player)
# 5. 细分:每种假动作的成功次数
detail = (
    fake_success.groupby(["player", "action"])
    .size()
    .reset_index(name="次数")
)
print("\n== 按动作类型细分 ==")
print(detail)

运行结果

== 假动作晃过防守统计 ==
   player  假动作晃过防守次数
0    哈登            2
1    库里            2
2  东契奇            1
== 按动作类型细分 ==
  player action  次数
0   东契奇   拜佛   1
1    哈登   后撤步  1
2    哈登   变向   1
3    库里   拜佛   2
4    库里   变向   1

思路解析

步骤 说明
数据准备 用 DataFrame 存储事件日志
定义假动作集合 明确哪些 action 算"假动作"
过滤条件 假动作 且 beat_defender == True
groupby 聚合 按球员分组计数
细分统计 按球员 + 动作类型二级统计

进阶扩展

  1. 换算成功率:晃过次数 / 使用假动作总次数
  2. 可视化:用 matplotlib 或 seaborn 画柱状图对比球员
  3. 按节/时间段统计:分析哪个时间段假动作最有效
  4. 对手维度:若数据含防守球员,可统计"被谁晃过最多"

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