Python 案例:统计低位防守解围次数
下面我用足球比赛数据统计为例,演示如何统计低位防守(Deep Defense)中的解围(Clearance)次数。

场景说明
- 低位防守:球队退防到本方半场(防守三区 = 球场后 1/3 区域)
- 解围:防守球员把球大脚踢出危险区域的动作
- 目标:统计球员在低位防守时的解围次数
完整代码
import pandas as pd
# ========== 1. 模拟比赛事件数据 ==========
data = {
"player": ["张三", "李四", "王五", "赵六", "张三", "李四", "王五", "赵六", "张三", "王五"],
"action": ["解围", "解围", "解围", "解围", "拦截", "解围", "解围", "犯规", "解围", "解围"],
# 事件发生的 x 坐标(0~100,0=本方球门,100=对方球门)
"x": [15, 25, 30, 10, 20, 18, 28, 40, 12, 22],
# 事件发生的 y 坐标(0~100)
"y": [50, 30, 60, 45, 55, 35, 65, 50, 40, 55],
}
df = pd.DataFrame(data)
# ========== 2. 定义低位防守区域 ==========
# 本方半场后 1/3:x < 33.3(防守三区)
LOW_DEFENSE_THRESHOLD = 100 / 3 # ≈ 33.33
# ========== 3. 筛选低位防守的解围 ==========
low_defense_clearance = df[
(df["action"] == "解围") &
(df["x"] < LOW_DEFENSE_THRESHOLD)
]
# ========== 4. 按球员统计次数 ==========
count_by_player = (
low_defense_clearance
.groupby("player")
.size()
.reset_index(name="低位解围次数")
.sort_values("低位解围次数", ascending=False)
)
# ========== 5. 输出结果 ==========
print("=== 低位防守解围明细 ===")
print(low_defense_clearance[["player", "x", "y"]])
print("\n=== 各球员低位防守解围次数 ===")
print(count_by_player)
print(f"\n总次数:{len(low_defense_clearance)}")
运行结果
=== 低位防守解围明细 ===
player x y
0 张三 15 50
1 李四 25 30
2 王五 30 60
3 赵六 10 45
5 李四 18 35
6 王五 28 65
8 张三 12 40
9 王五 22 55
=== 各球员低位防守解围次数 ===
player 低位解围次数
王五 3
张三 2
李四 2
赵六 1
总次数:8
关键点解析
| 步骤 | 说明 |
|---|---|
| 定义区域 | 用 x < 33.3 判断是否在低位防守区域(防守三区) |
| 双条件筛选 | 同时满足 action == "解围" 和 x < 阈值 |
| groupby 统计 | 按球员分组用 .size() 计数 |
| 排序 | 按次数降序,找出解围最多的球员 |
进阶:按比赛/球队统计
如果是多场比赛数据,可以这样聚合:
# 假设 df 中有 match_id 和 team 列
result = (
df[df["action"] == "解围"]
.query("x < @LOW_DEFENSE_THRESHOLD")
.groupby(["match_id", "team", "player"])
.size()
.reset_index(name="低位解围次数")
)
可视化(可选)
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"] # 显示中文
plt.bar(count_by_player["player"], count_by_player["低位解围次数"])
plt.xlabel("球员")
plt.ylabel("低位防守解围次数")"各球员低位防守解围统计")
plt.show()
核心公式:
低位防守解围 =
action == "解围"ANDx < 球场长度 / 3
你可以把 x 阈值换成自定义的防守区域(x < 40 表示更宽的防守范围),适配不同战术定义,需要我根据真实数据(如 StatsBomb、Opta 格式)改写吗?
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播