本文目录导读:

这段 Python 案例是如何统计/显示“横传转移球次数”的? 但你这条消息里没有附上代码或数据,所以我没法针对具体实现逐行解释。
下面我给你一个可直接运行的 Python 示例,演示如何从传球数据中统计“横传转移球次数”,并说明关键判定逻辑,你可以把它套到你的案例上。
什么是“横传转移球”?
通常可定义为:
球员 A 将球传给球员 B,且这次传球明显改变了进攻方向(从左路到右路,或从右路到左路),即横向转移。
常见判定方式(任选或组合):
- 按传球前后 x 坐标变化:
传球起点与终点的 y 方向位移大、x 方向位移小(即横向移动为主)。 - 按球场区域:
从一侧边路/肋部传到另一侧。 - 按传球角度:
传球方向与球场纵轴夹角接近 90°。 - 按“转移”标签:
数据里已有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())
你需要我做什么?
请把你的案例代码/数据字段发我(或截图),我可以帮你:
- 指出它具体用哪个字段/条件判定横传转移;
- 解释为什么这样判定;
- 帮你修改阈值或增加按球员/球队统计;
- 如果代码有 bug(比如次数不对),帮你排查。
你可以直接贴代码,我按你的案例逐行说明。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播