本文目录导读:

我来帮你分析这个Python案例:统计反击次数,看哪队更高效。
问题理解
"反击次数"通常指在体育比赛(如足球、篮球)中,一方由防守转为进攻的次数,我们需要统计两队各自的反击次数,并比较哪队更高效。
完整案例代码
import pandas as pd
from collections import defaultdict
# ========== 1. 模拟比赛事件数据 ==========
# 假设数据:每个事件包含 时间、队伍、事件类型、是否形成射门、是否进球
match_events = [
# (时间, 队伍, 事件类型, 是否射门, 是否进球)
(5, "A队", "抢断", True, False),
(8, "A队", "反击", True, True), # A队反击进球
(15, "B队", "抢断", True, False),
(18, "B队", "反击", True, False), # B队反击未进球
(25, "A队", "抢断", True, False),
(27, "A队", "反击", True, False),
(35, "B队", "抢断", True, False),
(38, "B队", "反击", True, True), # B队反击进球
(45, "A队", "抢断", True, False),
(47, "A队", "反击", False, False), # A队反击失败
(55, "B队", "抢断", True, False),
(58, "B队", "反击", True, False),
(65, "A队", "抢断", True, False),
(67, "A队", "反击", True, True), # A队反击进球
(75, "B队", "抢断", True, False),
(78, "B队", "反击", True, False),
(85, "A队", "抢断", True, False),
(87, "A队", "反击", True, False),
]
df = pd.DataFrame(match_events,
columns=["时间", "队伍", "事件类型", "是否射门", "是否进球"])
# ========== 2. 只保留反击事件 ==========
counter_attacks = df[df["事件类型"] == "反击"].copy()
print("=== 反击事件明细 ===")
print(counter_attacks)
print()
# ========== 3. 统计每队的反击数据 ==========
def analyze_counter_attacks(data):
stats = {}
for team in data["队伍"].unique():
team_data = data[data["队伍"] == team]
total = len(team_data)
shots = team_data["是否射门"].sum()
goals = team_data["是否进球"].sum()
stats[team] = {
"反击次数": total,
"形成射门": shots,
"进球数": goals,
"射门率": f"{shots/total*100:.1f}%",
"进球率": f"{goals/total*100:.1f}%",
"反击效率": round(goals / total * 100, 1) if total > 0 else 0
}
return stats
result = analyze_counter_attacks(counter_attacks)
print("=== 各队反击统计 ===")
for team, s in result.items():
print(f"\n{team}:")
for k, v in s.items():
print(f" {k}: {v}")
# ========== 4. 对比哪队更高效 ==========
print("\n=== 效率对比 ===")
teams = list(result.keys())
if result[teams[0]]["反击效率"] > result[teams[1]]["反击效率"]:
print(f"🏆 {teams[0]} 反击效率更高!")
elif result[teams[0]]["反击效率"] < result[teams[1]]["反击效率"]:
print(f"🏆 {teams[1]} 反击效率更高!")
else:
print("两队反击效率相同!")
输出结果
=== 反击事件明细 ===
时间 队伍 事件类型 是否射门 是否进球
1 8 A队 反击 True True
3 18 B队 反击 True False
5 27 A队 反击 True False
7 38 B队 反击 True True
9 47 A队 反击 False False
11 58 B队 反击 True False
13 67 A队 反击 True True
15 78 B队 反击 True False
17 87 A队 反击 True False
=== 各队反击统计 ===
A队:
反击次数: 5
形成射门: 4
进球数: 2
射门率: 80.0%
进球率: 40.0%
反击效率: 40.0
B队:
反击次数: 4
形成射门: 4
进球数: 1
射门率: 100.0%
进球率: 25.0%
反击效率: 25.0
=== 效率对比 ===
🏆 A队 反击效率更高!
多维度高效性分析
效率不能只看进球率,建议从多角度评估:
def comprehensive_efficiency(stats):
"""综合效率评分"""
scores = {}
for team, s in stats.items():
total = s["反击次数"]
shots = s["形成射门"]
goals = s["进球数"]
# 权重:射门率40% + 进球率60%
shot_rate = shots / total if total else 0
goal_rate = goals / total if total else 0
score = shot_rate * 0.4 + goal_rate * 0.6
scores[team] = {
"射门率": f"{shot_rate*100:.1f}%",
"进球率": f"{goal_rate*100:.1f}%",
"综合得分": round(score, 3)
}
return scores
print("\n=== 综合效率评分 ===")
for team, s in comprehensive_efficiency(result).items():
print(f"{team}: {s}")
关键指标说明
| 指标 | 含义 | 说明 |
|---|---|---|
| 反击次数 | 总反击发起数 | 反映反击频率 |
| 射门率 | 形成射门/反击次数 | 反映推进质量 |
| 进球率 | 进球/反击次数 | 反映终结能力 |
| 综合效率 | 加权得分 | 平衡射门和进球 |
在本案例中:
- A队:反击5次,进2球,效率 40% → 更高效
- B队:反击4次,进1球,效率 25%
- 虽然B队射门率100%,但转化率低,综合来看 A队反击更高效 🏆
扩展建议
- 加入时间维度:分析不同时间段的效率
- 反击耗时:从抢断到射门的时间,越短越高效
- 对手强度:考虑对阵强弱队的差异
- 可视化:用 matplotlib 绘制对比柱状图
需要我补充可视化图表或真实足球数据接口的版本吗?
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播