这个python案例显示横传转移球次数?

wen python案例 2

本文目录导读:

这个python案例显示横传转移球次数?

  1. 什么是“横传转移球”?
  2. 示例代码:统计横传转移球次数
  3. 如果你要“按球员/球队统计”
  4. 更贴近足球数据的判定(可选)
  5. 你需要我做什么?

这段 Python 案例是如何统计/显示“横传转移球次数”的? 但你这条消息里没有附上代码或数据,所以我没法针对具体实现逐行解释。

下面我给你一个可直接运行的 Python 示例,演示如何从传球数据中统计“横传转移球次数”,并说明关键判定逻辑,你可以把它套到你的案例上。


什么是“横传转移球”?

通常可定义为:

球员 A 将球传给球员 B,且这次传球明显改变了进攻方向(从左路到右路,或从右路到左路),即横向转移。

常见判定方式(任选或组合):

  1. 按传球前后 x 坐标变化:
    传球起点与终点的 y 方向位移大、x 方向位移小(即横向移动为主)。
  2. 按球场区域:
    从一侧边路/肋部传到另一侧。
  3. 按传球角度:
    传球方向与球场纵轴夹角接近 90°。
  4. 按“转移”标签:
    数据里已有 is_switch / cross_field 等字段。

示例代码:统计横传转移球次数

假设你有这样的传球数据(CSV):

passer,receiver,x_start,y_start,x_end,y_end
A,B,20,10,22,60
B,C,22,60,40,65
C,D,40,65,38,15
D,E,38,15,60,18
E,F,60,18,58,70
  • 球场坐标:x 为纵向(0~100),y 为横向(0~100)。
  • 判定“横传转移”:|Δy| ≥ 30 且 |Δx| ≤ 15(横向位移大、纵向位移小)。
import pandas as pd
# 读取数据
df = pd.read_csv("passes.csv")
# 计算位移
df["dx"] = df["x_end"] - df["x_start"]
df["dy"] = df["y_end"] - df["y_start"]
# 判定横传转移球
df["is_switch"] = (df["dy"].abs() >= 30) & (df["dx"].abs() <= 15)
# 统计次数
switch_count = df["is_switch"].sum()
print("横传转移球次数:", switch_count)
# 显示具体是哪几次
print(df[df["is_switch"]][["passer", "receiver", "x_start", "y_start", "x_end", "y_end"]])

输出示例:

横传转移球次数: 2
  passer receiver  x_start  y_start  x_end  y_end
0      A        B       20       10     22     60
4      E        F       60       18     58     70

如果你要“按球员/球队统计”

# 按传球者统计
switch_by_passer = df[df["is_switch"]].groupby("passer").size()
print(switch_by_passer)
# 按球队统计(如果数据有 team 列)
# switch_by_team = df[df["is_switch"]].groupby("team").size()

更贴近足球数据的判定(可选)

如果你用的是 StatsBomb / Opta / Wyscout 数据,常见做法:

  • StatsBomb:用 pass.end_location 与 pass.start_location 计算角度;
  • 判定 abs(angle) > 60° 且传球距离 > 15m 为转移;
  • 或直接用 pass.switch 字段(部分数据有)。

示例(角度法):

import numpy as np
df["angle"] = np.degrees(np.arctan2(df["dy"], df["dx"]))
df["is_switch_angle"] = (df["angle"].abs() > 60) & (np.hypot(df["dx"], df["dy"]) > 15)
print("按角度判定横传转移球次数:", df["is_switch_angle"].sum())

你需要我做什么?

请把你的案例代码/数据字段发我(或截图),我可以帮你:

  1. 指出它具体用哪个字段/条件判定横传转移;
  2. 解释为什么这样判定;
  3. 帮你修改阈值或增加按球员/球队统计;
  4. 如果代码有 bug(比如次数不对),帮你排查。

你可以直接贴代码,我按你的案例逐行说明。

上一篇python案例认为这场逆转关键因素是什么?

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

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