本文目录导读:

要判断“进攻套路是否单一”,需要先明确你指的是哪个赛后Python案例——因为不同比赛/不同数据源的分析代码差别很大,不过我可以给你一个通用的判断框架 + Python实现思路,你套到自己的案例里就能得出结论。
判断“进攻套路是否单一”的核心指标
| 维度 | 单一的表现 | 丰富的表现 |
|---|---|---|
| 进攻方式分布 | 某一种方式占比 >50–60% | 多种方式较均衡 |
| 进攻区域 | 集中在1–2个区域 | 覆盖多个区域 |
| 进攻发起点 | 固定几个球员/位置 | 多点开花 |
| 进攻终结方式 | 几乎都是同一类(如只传中) | 地面渗透+传中+反击+定位球 |
| 进攻方向 | 明显偏一侧 | 左右均衡 |
| 序列多样性 | 进攻序列重复度高 | 序列模式多样 |
Python 分析示例(可直接套用)
假设你有事件数据(如 events_df,含 team, type, x, y, player, minute):
import pandas as pd
import numpy as np
from collections import Counter
# 1. 进攻方式分布(占比集中度)
attack_types = events_df[events_df['type'].isin(
['传中','直塞','长传','突破','射门','角球','反击'])]['type']
dist = attack_types.value_counts(normalize=True)
print(dist)
# 单一判断:max占比 > 0.5 且 前2类合计 > 0.75 → 偏单一
# 2. 香农熵 / 多样性指数(越高越丰富)
def shannon_entropy(series):
p = series.value_counts(normalize=True)
return -(p * np.log(p)).sum()
print("进攻方式熵:", shannon_entropy(attack_types))
# 3. 进攻区域集中度(按x,y分网格)
events_df['zone'] = (events_df['x']//20).astype(str)+"_"+(events_df['y']//20).astype(str)
zone_dist = events_df['zone'].value_counts(normalize=True)
print("Top3区域占比:", zone_dist.head(3).sum()) # >0.6 偏集中
# 4. 左右路均衡度
left = (events_df['y'] < 34).sum()
right = (events_df['y'] > 34).sum()
print("左/右比例:", left/(left+right), right/(left+right)) # 严重偏离0.5→偏一侧
# 5. 进攻序列重复度(套路重复)
# 把每次进攻的"方式序列"拼成字符串,看重复率
seqs = events_df.groupby('possession_id')['type'].apply(lambda s: '->'.join(s))
top_seq_ratio = seqs.value_counts(normalize=True).head(3).sum()
print("Top3进攻序列占比:", top_seq_ratio) # 越高越套路化
结论判定建议
- 偏单一:某方式占比>50%,或 Top3 区域>60%,或左右失衡明显,或 Top3 序列占比高(>40%),熵值低。
- 较丰富:各方式占比均衡、熵值高、多点发起、左右接近 50/50。
需要你补充的信息
为了给你针对该案例的具体结论,请告诉我:
- 案例用的是哪场比赛/哪支球队?
- 数据字段有哪些(是否含坐标、传球类型、球员)?
- 你已有的分析代码或输出结果?
把这几项发我,我可以直接帮你跑出“进攻套路是否单一”的量化结论和图表建议。