python案例统计转身过人次数谁多?

wen python案例 2

统计转身过人次数 - Python案例

下面用一个模拟篮球比赛数据的案例,演示如何统计每位球员的"转身过人"次数并找出谁最多。

python案例统计转身过人次数谁多?

场景说明

假设我们有一份比赛事件日志,记录每次进攻动作,每条数据包含:球员、动作类型。

完整代码

import pandas as pd
from collections import Counter
# 1. 模拟比赛事件数据(实际可从 CSV 或 API 读取)
data = [
    {"player": "张三", "action": "转身过人"},
    {"player": "李四", "action": "三分投篮"},
    {"player": "张三", "action": "转身过人"},
    {"player": "王五", "action": "转身过人"},
    {"player": "李四", "action": "转身过人"},
    {"player": "张三", "action": "上篮"},
    {"player": "王五", "action": "转身过人"},
    {"player": "李四", "action": "转身过人"},
    {"player": "赵六", "action": "转身过人"},
    {"player": "张三", "action": "转身过人"},
    {"player": "王五", "action": "传球"},
    {"player": "赵六", "action": "转身过人"},
]
df = pd.DataFrame(data)
# 2. 筛选出"转身过人"的记录
spin_df = df[df["action"] == "转身过人"]
# 3. 统计每位球员的转身过人次数
counts = spin_df["player"].value_counts()
print("=== 转身过人次数排行 ===")
print(counts)
# 4. 找出次数最多的球员
max_count = counts.max()
top_players = counts[counts == max_count].index.tolist()
print(f"\n转身过人次数最多:{max_count} 次")
print(f"球员:{', '.join(top_players)}")

运行结果

=== 转身过人次数排行 ===
张三    3
李四    2
王五    2
赵六    2
Name: player, dtype: int64
转身过人次数最多:3 次
球员:张三

代码解析

步骤 作用
df[df["action"]=="转身过人"] 过滤出目标动作
value_counts() 按球员聚合计数,默认降序
counts.max() + 布尔筛选 处理并列第一名的情况

扩展:可视化 & 从文件读取

import matplotlib.pyplot as plt
# 从CSV读取(示例)
# df = pd.read_csv("match_events.csv")
# 画柱状图
counts.plot(kind="bar", color="orange", title="转身过人次数统计")
plt.xlabel("球员")
plt.ylabel("次数")
plt.tight_layout()
plt.savefig("spin_move_stats.png")
plt.show()

进阶思路

  1. 按比赛/节次统计:加 period 字段,用 groupby(["period","player"]) 分组。
  2. 成功率统计:动作字段加 success(True/False),统计每人「转身过人成功次数」。
  3. 效率指标:转身过人次数 / 总持球次数,避免只看绝对值。
  4. 多人并列:如上用 counts[counts==max],避免只取 idxmax() 漏掉并列。

如果你的真实数据字段不同(如 event_type、player_name),告诉我列名,我可以改成对应版本 👍

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

友情链接攻略窝 · 礼包窝 · 配置窝 · 换算窝 · 算法窝 · 查文窝 · 手册窝 · 问答窝 · 全文搜 · 手册库
相关站点礼包窝 · 查文窝