python案例统计冲刺跑次数谁更多?

wen python案例 2

统计冲刺跑次数谁更多 - Python案例

问题场景

假设有两个足球运动员,教练记录了他们每场比赛的冲刺跑次数(冲刺跑定义为速度超过 25 km/h 的跑动),现在需要统计:谁冲刺跑次数更多?

python案例统计冲刺跑次数谁更多?

下面用几个不同层级的案例来演示。


基础版 - 两个人总次数对比

# 每个运动员每场比赛的冲刺次数
player_a = [12, 15, 9, 18, 14]   # A 每场冲刺次数
player_b = [10, 20, 13, 11, 16]  # B 每场冲刺次数
total_a = sum(player_a)
total_b = sum(player_b)
print(f"A 总冲刺次数: {total_a}")
print(f"B 总冲刺次数: {total_b}")
if total_a > total_b:
    print(f"🏆 A 冲刺更多,多 {total_a - total_b} 次")
elif total_b > total_a:
    print(f"🏆 B 冲刺更多,多 {total_b - total_a} 次")
else:
    print("🤝 两人冲刺次数相同")

输出:

A 总冲刺次数: 68
B 总冲刺次数: 70
🏆 B 冲刺更多,多 2 次

进阶版 - 多维度统计(场均、最高、胜场)

import statistics
players = {
    "球员A": [12, 15, 9, 18, 14],
    "球员B": [10, 20, 13, 11, 16],
}
def analyze(name, data):
    return {
        "总次数": sum(data),
        "场次": len(data),
        "场均": round(statistics.mean(data), 2),
        "最高": max(data),
        "最低": min(data),
    }
results = {name: analyze(name, data) for name, data in players.items()}
# 打印表格
print(f"{'球员':<8}{'总次数':<8}{'场均':<8}{'最高':<8}{'最低':<8}")
for name, r in results.items():
    print(f"{name:<8}{r['总次数']:<8}{r['场均']:<8}{r['最高']:<8}{r['最低']:<8}")
# 找出谁更多(多个维度)
winner = max(results, key=lambda x: results[x]["总次数"])
print(f"\n🏆 冲刺跑总次数最多的是: {winner} ({results[winner]['总次数']} 次)")

输出:

球员      总次数  场均    最高    最低
球员A     68      13.6    18      9
球员B     70      14.0    20      10
🏆 冲刺跑总次数最多的是: 球员B (70 次)

完整版 - 读取 CSV 数据对比(实战常用)

sprints.csv 文件格式:

date,player,sprints
2024-03-01,A,12
2024-03-01,B,10
2024-03-08,A,15
2024-03-08,B,20
2024-03-15,A,9
2024-03-15,B,13
2024-03-22,A,18
2024-03-22,B,11
2024-03-29,A,14
2024-03-29,B,16
import csv
from collections import defaultdict
totals = defaultdict(int)
with open("sprints.csv", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        totals[row["player"]] += int(row["sprints"])
# 排序输出
ranked = sorted(totals.items(), key=lambda x: x[1], reverse=True)
print("冲刺跑次数排行榜:")
for i, (player, count) in enumerate(ranked, 1):
    print(f"  {i}. {player}: {count} 次")
if len(ranked) >= 2:
    top, second = ranked[0], ranked[1]
    print(f"\n🏆 {top[0]} 冲刺次数更多,领先 {top[1] - second[1]} 次")

用 Pandas 一行搞定(数据分析推荐)

import pandas as pd
df = pd.read_csv("sprints.csv")
# 按球员汇总
total = df.groupby("player")["sprints"].sum().sort_values(ascending=False)
# 谁更多?
print(total)
print(f"\n冲刺次数最多的球员是: {total.idxmax()} ({total.max()} 次)")
# 每场对比谁赢
pivot = df.pivot_table(index="date", columns="player", values="sprints")
pivot["胜者"] = pivot.idxmax(axis=1)
print("\n每场冲刺更多者:")
print(pivot)

方法 适用场景
列表 + sum() 简单几人几场的对比
字典 + 函数 需要多指标(场均、最高等)
csv 模块 真实文件数据,无需第三方库
pandas 数据量大、需要分组统计和透视表

核心思路一致:

  1. 收集每个球员的冲刺次数(列表/字典/DataFrame)
  2. 求和/统计
  3. 用 max() 或排序找出「谁更多」
  4. 输出差值或排行榜

如果需要处理实时 GPS 数据判断冲刺(即根据速度序列自动识别冲刺跑片段),我也可以补充案例,例如检测连续超过某个速度阈值的片段,要吗?

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

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