根据python案例,协防补位成功次数?

wen python案例 6

Python案例:协防补位成功次数统计

下面给你几个不同层次的实现案例,从简单到实战。

根据python案例,协防补位成功次数?


基础统计(字典计数)

# 协防补位记录:每条记录为 (防守球员, 是否成功)
records = [
    ("张三", True),
    ("李四", True),
    ("张三", False),
    ("王五", True),
    ("李四", True),
    ("张三", True),
]
# 统计每位球员协防补位成功次数
success_count = {}
for player, success in records:
    if success:
        success_count[player] = success_count.get(player, 0) + 1
print("协防补位成功次数:")
for player, count in success_count.items():
    print(f"{player}: {count} 次")

输出:

协防补位成功次数:
张三: 2 次
李四: 2 次
王五: 1 次

使用 Pandas 分析(推荐)

import pandas as pd
data = {
    "球员": ["张三", "李四", "张三", "王五", "李四", "张三"],
    "是否成功": [True, True, False, True, True, True],
    "位置": ["后卫", "中场", "后卫", "前锋", "中场", "后卫"],
}
df = pd.DataFrame(data)
# 1. 每位球员协防补位成功次数
success_by_player = df[df["是否成功"]].groupby("球员").size()
print("=== 每位球员协防补位成功次数 ===")
print(success_by_player)
# 2. 各位置协防补位成功次数
success_by_pos = df[df["是否成功"]].groupby("位置").size()
print("\n=== 各位置协防补位成功次数 ===")
print(success_by_pos)
# 3. 协防补位成功率
rate = df.groupby("球员")["是否成功"].mean() * 100
print("\n=== 各球员协防补位成功率(%) ===")
print(rate.round(1))

输出:

=== 每位球员协防补位成功次数 ===
球员
张三    2
李四    2
王五    1
=== 各位置协防补位成功次数 ===
位置
中场    2
前锋    1
后卫    2
=== 各球员协防补位成功率(%) ===
张三    66.7
李四   100.0
王五   100.0

读取文件统计(实战版)

假设有一个 defense.csv 文件:

球员,协防补位总次数,成功次数
张三,5,3
李四,4,4
王五,3,1
import pandas as pd
df = pd.read_csv("defense.csv")
# 计算成功率
df["成功率"] = (df["成功次数"] / df["协防补位总次数"] * 100).round(1)
# 按成功次数排序
df_sorted = df.sort_values("成功次数", ascending=False)
print(df_sorted)
# 全队协防补位成功总次数
total = df["成功次数"].sum()
print(f"\n全队协防补位成功总次数:{total} 次")

方法 适用场景
dict.get() 计数 数据量小、无依赖
collections.Counter 快速计数
Pandas groupby 多维度分析(球员/位置/时间)
CSV读取 真实比赛数据

核心思路:

  1. 用布尔值或 1/0 标记是否成功
  2. 用 groupby + size() 或 sum() 聚合
  3. 成功率 = 成功次数 / 总次数 × 100%

如果你有具体的数据结构(比如比赛日志格式、字段名),可以发给我,我帮你写针对性的统计代码。

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