实用脚本统计任意球直接得分几次?

wen 实用脚本 1

本文目录导读:

实用脚本统计任意球直接得分几次?

  1. 方案一:如果你有事件级数据(推荐)
  2. 方案二:如果你只有“进球方式”文本字段
  3. 方案三:从公开数据源抓取(示例:FBref)
  4. 关键提醒

你想统计“任意球直接得分”的次数,这个需求在足球数据里很常见,不过要先明确一点:没有一个通用的“任意球直接得分”官方统计口径,不同数据源(Opta、WhoScored、Transfermarkt、FIFA官方)对“直接任意球破门”的判定可能不同(比如是否排除折射、是否算作定位球进球的一种)。

下面给你一个可运行的 Python 脚本模板,它假设你有一份结构化数据(CSV/Excel),包含比赛事件记录,然后统计“任意球直接得分”的次数。


如果你有事件级数据(推荐)

假设你的 CSV 长这样(events.csv):

match_id,minute,team,player,event_type,set_piece_type,shot_outcome,is_direct
1,23,A队,张三,shot,free_kick,goal,1
1,45,B队,李四,shot,free_kick,off_target,0
2,67,A队,王五,shot,free_kick,goal,0
  • event_type == "shot" 表示射门事件
  • set_piece_type == "free_kick" 表示任意球
  • shot_outcome == "goal" 表示进球
  • is_direct == 1 表示直接射门得分(非配合后射门)

脚本:

import pandas as pd
# 读取数据
df = pd.read_csv("events.csv")
# 筛选:任意球 + 射门 + 进球 + 直接得分
direct_fk_goals = df[
    (df["event_type"] == "shot") &
    (df["set_piece_type"] == "free_kick") &
    (df["shot_outcome"] == "goal") &
    (df["is_direct"] == 1)
]
# 总次数
total = len(direct_fk_goals)
print(f"任意球直接得分总次数: {total}")
# 按球员统计
by_player = direct_fk_goals.groupby("player").size().sort_values(ascending=False)
print("\n按球员统计:")
print(by_player)
# 按球队统计
by_team = direct_fk_goals.groupby("team").size().sort_values(ascending=False)
print("\n按球队统计:")
print(by_team)
# 导出明细
direct_fk_goals.to_csv("direct_fk_goals.csv", index=False)

如果你只有“进球方式”文本字段

假设数据里有一列 goal_type,值为中文描述,如 "直接任意球"、"点球"、"头球" 等:

import pandas as pd
df = pd.read_csv("goals.csv")
# 模糊匹配“直接任意球”
mask = df["goal_type"].str.contains("直接任意球", na=False)
direct_fk_goals = df[mask]
print(f"任意球直接得分总次数: {len(direct_fk_goals)}")
print(direct_fk_goals.groupby("player").size().sort_values(ascending=False))

从公开数据源抓取(示例:FBref)

FBref 有 Pass Types 和 Shooting 表,FK 列表示任意球射门,SoT 表示射正,但不直接区分“直接任意球进球”,你需要结合 Shooting 表的 FK 列(任意球射门数)和比赛事件中的进球类型来判断,FBref 的 match report 里有 Free Kick 进球标注,可以用 soccerdata 库抓取:

import soccerdata as sd
fbref = sd.FBref(leagues="ENG-Premier League", seasons="2023-2024")
# 抓取比赛事件(需要具体 match_id)
# 然后筛选 event_type 含 "Free Kick" 且为 Goal 的记录

注意:FBref 对直接任意球进球的标注不一定 100% 准确,且抓取需遵守其使用条款。


关键提醒

  1. “直接得分”的判定:必须排除“任意球战术配合后射门得分”,前者是直接射门入网,如果你的数据只有“任意球进球”而没有“是否直接”,统计结果会偏高。
  2. 折射球:有些数据源把折射入网也算直接任意球,有些不算,需统一口径。
  3. 数据源选择:Opta/StatsBomb 的事件数据最细,但需付费;FBref/Transfermarkt 免费但粒度粗。

如果你能告诉我你手头的数据格式(CSV 字段、来自哪个网站、是事件级还是汇总级),我可以帮你把脚本改成直接能跑的样子。

上一篇实用脚本认为这场轻敌思想是否存在?

下一篇当前分类已是最新一篇

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

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