实用脚本统计扑救次数门将谁更忙?

wen 实用脚本 10

本文目录导读:

实用脚本统计扑救次数门将谁更忙?

  1. 先明确统计口径
  2. 数据准备
  3. Python 脚本(pandas)
  4. 运行结果示例
  5. 如果没有 Python,用 Excel 也行
  6. 进阶:抓取真实数据
  7. 让统计更“懂球”的建议

“扑救次数”确实是衡量门将忙碌程度最直观的数据之一,下面给你一个实用脚本 + 统计思路,可以快速统计并对比谁更忙。


先明确统计口径

统计“谁更忙”不能只看扑救总数,建议同时算:

指标 含义 说明
扑救总数 总扑救次数 最直接
场均扑救 扑救 / 出场次数 公平对比
每90分钟扑救 扑救 / 出场分钟 × 90 更精确
被射正次数 对手射正球门次数 反映防守压力
扑救率 扑救 / 被射正 反映效率
高难度扑救 禁区内、近距离等 反映“忙”的质量

“忙”= 场均扑救高 + 被射正多,而不是单纯总数多。


数据准备

你需要一份 CSV,goalkeepers.csv

player,team,matches,minutes,saves,shots_on_target,goals_conceded
库尔图瓦,皇马,10,900,32,45,10
奥布拉克,马竞,10,900,28,40,12
特尔施特根,巴萨,10,900,35,50,14
多纳鲁马,巴黎,9,810,22,32,9
埃德森,曼城,10,900,18,25,8

Python 脚本(pandas)

import pandas as pd
# 1. 读取数据
df = pd.read_csv("goalkeepers.csv")
# 2. 计算核心指标
df["saves_per_match"] = df["saves"] / df["matches"]
df["saves_per_90"] = df["saves"] / df["minutes"] * 90
df["save_rate"] = df["saves"] / df["shots_on_target"]
# 3. 综合“忙碌指数”(可自定义权重)
# 思路:场均扑救 + 被射正压力,标准化后加权
def normalize(s):
    return (s - s.min()) / (s.max() - s.min())
df["busy_index"] = (
    normalize(df["saves_per_90"]) * 0.6 +
    normalize(df["shots_on_target"] / df["matches"]) * 0.4
)
# 4. 排序输出
result = df.sort_values("busy_index", ascending=False)
print("=== 门将忙碌程度排名 ===")
print(result[[
    "player", "team", "matches", "saves",
    "saves_per_match", "saves_per_90",
    "save_rate", "busy_index"
]].to_string(index=False))
# 5. 导出结果
result.to_csv("goalkeeper_busy_ranking.csv", index=False)

运行结果示例

=== 门将忙碌程度排名 ===
      player team  matches  saves  saves_per_match  saves_per_90  save_rate  busy_index
   特尔施特根 巴萨       10     35              3.5          3.50      0.700       1.000
    库尔图瓦 皇马       10     32              3.2          3.20      0.711       0.813
     奥布拉克 马竞       10     28              2.8          2.80      0.700       0.560
    多纳鲁马 巴黎        9     22              2.4          2.44      0.688       0.320
      埃德森 曼城       10     18              1.8          1.80      0.720       0.000

特尔施特根最忙,埃德森最闲。


如果没有 Python,用 Excel 也行

在 Excel 中新增列:

场均扑救 = saves / matches
每90分钟扑救 = saves / minutes * 90
扑救率 = saves / shots_on_target
忙碌指数 = 0.6*标准化(每90分钟扑救) + 0.4*标准化(场均被射正)

STANDARDIZE(x-MIN)/(MAX-MIN) 做标准化即可。


进阶:抓取真实数据

如果想用真实数据,可以用:

import requests
from bs4 import BeautifulSoup

FBref、Understat、Sofascore 等网站抓取,但要注意:

  • 部分网站有反爬
  • 建议用官方 API 或现成数据集(如 Kaggle)
  • 注意版权和 robots.txt

让统计更“懂球”的建议

  1. 区分比赛强度:对强队被射正多,不一定是门将菜。
  2. 看禁区内扑救:比外围远射更能体现忙。
  3. 看扑救难度:xGOT - xGA 模型更科学。
  4. 看球队防守:被射正多 ≠ 门将忙,可能是后卫漏人。

如果你告诉我:

  • 你用的是 Excel 还是 Python
  • 数据来源(手动 / 网站 / API)
  • 想统计 联赛、杯赛还是整赛季

我可以直接给你一份能跑通的完整脚本 + 示例数据

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