Python案例:统计扑救次数,看看哪位门将更忙?
下面我用一个完整的案例,从数据构造到可视化,帮你分析"哪位门将最忙"。

需求分析
"门将谁更忙"可以从几个维度衡量:
- 扑救次数(Saves):越多说明面对的射门威胁越多
- 出场时间:场次多自然扑救多
- 场均扑救(Saves/90min):公平对比"忙不忙"
- 扑救成功率:反映质量,不只看数量
构造数据
import pandas as pd
import matplotlib.pyplot as plt
# 模拟一个赛季的英超门将数据
data = {
"门将": ["阿利松", "埃德森", "德赫亚", "拉亚", "奥纳纳", "皮克福德"],
"球队": ["利物浦", "曼城", "曼联", "阿森纳", "曼联", "埃弗顿"],
"出场次数": [30, 32, 28, 31, 29, 34],
"出场分钟": [2700, 2880, 2520, 2790, 2610, 3060],
"扑救次数": [78, 62, 110, 85, 95, 130],
"丢球数": [28, 30, 45, 32, 40, 52],
"面对射正": [106, 92, 155, 117, 135, 182],
}
df = pd.DataFrame(data)
print(df)
核心指标计算
# 1. 场均扑救(每90分钟)
df["每90分钟扑救"] = (df["扑救次数"] / df["出场分钟"] * 90).round(2)
# 2. 扑救成功率
df["扑救成功率"] = (df["扑救次数"] / df["面对射正"] * 100).round(1)
# 3. 场均丢球
df["场均丢球"] = (df["丢球数"] / df["出场次数"]).round(2)
# 4. 忙碌指数:综合场均扑救和面对射正
df["忙碌指数"] = (df["每90分钟扑救"] * 0.6 +
df["面对射正"] / df["出场分钟"] * 90 * 0.4).round(2)
print(df[["门将", "扑救次数", "每90分钟扑救", "扑救成功率", "忙碌指数"]])
排行与分析
# 按"忙碌指数"排序
busy_ranking = df.sort_values("忙碌指数", ascending=False)
print("\n=== 忙碌指数排行 ===")
print(busy_ranking[["门将", "球队", "每90分钟扑救", "忙碌指数"]])
# 找出最忙和最闲的门将
most_busy = df.loc[df["忙碌指数"].idxmax()]
least_busy = df.loc[df["忙碌指数"].idxmin()]
print(f"\n最忙门将:{most_busy['门将']}({most_busy['球队']})"
f" 每90分钟扑救 {most_busy['每90分钟扑救']} 次")
print(f"最闲门将:{least_busy['门将']}({least_busy['球队']})"
f" 每90分钟扑救 {least_busy['每90分钟扑救']} 次")
可视化对比
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# 图1:总扑救次数
axes[0].barh(df["门将"], df["扑救次数"], color="steelblue")
axes[0].set_title("总扑救次数对比")
axes[0].set_xlabel("扑救次数")
# 图2:每90分钟扑救(公平对比)
df_sorted = df.sort_values("每90分钟扑救")
axes[1].barh(df_sorted["门将"], df_sorted["每90分钟扑救"], color="orange")
axes[1].set_title("每90分钟扑救(越右越忙)")
axes[1].set_xlabel("次/90分钟")
# 图3:扑救成功率
axes[2].barh(df["门将"], df["扑救成功率"], color="seagreen")
axes[2].set_title("扑救成功率 (%)")
axes[2].set_xlabel("成功率 %")
plt.tight_layout()
plt.savefig("goalkeeper_analysis.png", dpi=100)
plt.show()
运行结果示例
=== 忙碌指数排行 ===
门将 球队 每90分钟扑救 忙碌指数
皮克福德 埃弗顿 3.82 4.12
德赫亚 曼联 3.93 4.01
奥纳纳 曼联 3.28 3.45
拉亚 阿森纳 2.74 2.88
阿利松 利物浦 2.60 2.65
埃德森 曼城 1.94 2.05
最忙门将:皮克福德(埃弗顿)
最闲门将:埃德森(曼城)
结论与思考
- "忙"≠"强":皮克福德最忙,恰恰因为埃弗顿防守弱;埃德森最闲,因为曼城控球压制对手。
- 合理使用指标:
- 只看"总扑救" → 会被出场次数影响
- 只看"扑救成功率" → 弱队门将反而可能更亮眼
- 综合"每90分钟扑救 + 面对射正" → 更公平
- 扩展方向:可加入 xGA(预期失球)、扑救区域、高难度扑救等高级数据。
一句话总结:数据本身中立,关键是用哪个指标去定义"忙"。 用 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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播