Python案例:统计反击次数,哪队更高效?
下面我用一个完整的Python案例来演示如何统计足球比赛中的反击次数,并对比两队谁的反击更高效。

问题定义
我们要分析一场比赛中两队的反击数据:
- 统计每队的反击次数
- 统计每次反击的结果(进球 / 射门 / 失误)
- 计算反击效率 = 进球数 / 反击次数
数据准备
import pandas as pd
# 模拟一场比赛的进攻事件数据
data = [
# 球队, 进攻类型, 反击结果, 用时(秒)
("A队", "反击", "进球", 8),
("A队", "反击", "射门被扑", 10),
("A队", "反击", "失误", 6),
("A队", "反击", "进球", 9),
("A队", "反击", "射门偏出", 12),
("A队", "阵地战", "进球", 25),
("B队", "反击", "进球", 7),
("B队", "反击", "进球", 11),
("B队", "反击", "射门被扑", 9),
("B队", "反击", "失误", 5),
("B队", "反击", "进球", 10),
("B队", "反击", "射门偏出", 8),
("B队", "阵地战", "射门偏出", 22),
]
df = pd.DataFrame(data, columns=["球队", "进攻类型", "结果", "用时"])
print(df)
统计反击次数与效率
# 只筛选反击事件
counter = df[df["进攻类型"] == "反击"]
# 统计每队反击次数
counts = counter.groupby("球队").size().rename("反击次数")
# 统计每队反击进球数
goals = counter[counter["结果"] == "进球"].groupby("球队").size().rename("反击进球")
# 合并
result = pd.concat([counts, goals], axis=1).fillna(0)
result["反击成功率"] = (result["反击进球"] / result["反击次数"] * 100).round(1)
# 平均反击用时
avg_time = counter.groupby("球队")["用时"].mean().round(1).rename("平均用时(秒)")
result = pd.concat([result, avg_time], axis=1)
print(result)
输出结果:
反击次数 反击进球 反击成功率 平均用时(秒)
A队 5 2.0 40.0 9.0
B队 6 3.0 50.0 8.3
结论分析
| 指标 | A队 | B队 | |
|---|---|---|---|
| 反击次数 | 5 | 6 | B队发起反击更多 |
| 反击进球 | 2 | 3 | B队进球更多 |
| 反击成功率 | 40% | 50% | B队更高 |
| 平均用时 | 0s | 3s | B队反击更快 |
✅ 最终判定:B队反击更高效
理由:
- 次数更多:6次 vs 5次,说明B队更善于制造反击机会
- 成功率更高:50% vs 40%,把握机会能力更强
- 耗时更短:平均8.3秒完成一次反击,进攻更犀利
进阶:反击效率综合评分
如果要给一个"效率分",可以加权计算:
# 综合评分:成功率权重0.6,速度权重0.4(速度越快分越高)
max_time = result["平均用时(秒)"].max()
result["速度得分"] = (max_time / result["平均用时(秒)"] * 100).round(1)
result["综合效率分"] = (
result["反击成功率"] * 0.6 + result["速度得分"] * 0.4
).round(1)
print(result[["反击成功率", "速度得分", "综合效率分"]])
这样就能得到一个更直观的对比,B队依然胜出。
核心思路总结:统计反击不能只看次数,要结合"次数 + 转化率 + 速度"三个维度,用 groupby 分组聚合是最简洁的Python实现方式。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播