本文目录导读:

在Python里看“本场战术纪律执行”,通常不是直接看代码本身,而是把比赛事件数据转成纪律指标,再做可视化/评分,下面给你一个可直接套用的分析框架和代码模板。
先定义“战术纪律执行”的指标
不同项目含义不同,足球/篮球常用这些:
| 维度 | 指标 | 纪律好的表现 |
|---|---|---|
| 阵型保持 | 球员平均站位偏离战术位置的距离 | 越小越好 |
| 防守纪律 | 犯规数、黄牌、危险区域犯规 | 越少越好 |
| 进攻纪律 | 无效远射、盲目传中、丢球率 | 越低越好 |
| 压迫纪律 | 高位逼抢触发次数 vs 被过次数 | 触发多、被过少 |
| 转换纪律 | 由攻转守回追人数/时间 | 回追快、人数够 |
| 教练指令 | 换人后阵型执行度 | 换人后偏离度不上升 |
用Python怎么“看”
核心思路:把事件数据 → 计算纪律分数 → 可视化对比。
数据准备(示例结构)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 假设有一份本场事件数据
events = pd.DataFrame({
'player': ['A','B','C','A','D','B','C','A'],
'team': ['主队']*8,
'event': ['pass','foul','shot','pass','foul','pass','shot','tackle'],
'x': [30, 60, 85, 40, 70, 50, 88, 45],
'y': [20, 35, 50, 25, 40, 30, 52, 22],
'minute': [5, 12, 20, 28, 35, 42, 55, 60],
'success': [1, 0, 0, 1, 0, 1, 0, 1]
})
# 战术位置(教练要求的平均站位)
tactical_position = {'A': (35, 22), 'B': (55, 32), 'C': (80, 50), 'D': (65, 38)}
计算纪律指标
def discipline_score(events, tactical_position):
score = {}
# 1) 站位纪律:实际平均位置 vs 战术位置
pos = events.groupby('player')[['x','y']].mean()
deviation = []
for p, (tx, ty) in tactical_position.items():
if p in pos.index:
dx = pos.loc[p,'x'] - tx
dy = pos.loc[p,'y'] - ty
deviation.append(np.sqrt(dx**2 + dy**2))
score['站位偏离度'] = np.mean(deviation) if deviation else np.nan
# 2) 犯规纪律
fouls = (events['event'] == 'foul').sum()
score['犯规次数'] = fouls
# 3) 进攻选择纪律:低质量射门(x>80 且 success=0 算勉强打门)
bad_shots = ((events['event']=='shot') & (events['x']>80) & (events['success']==0)).sum()
score['低质量射门'] = bad_shots
# 4) 传球纪律:传球成功率
passes = events[events['event']=='pass']
score['传球成功率'] = passes['success'].mean() if len(passes) else np.nan
return score
result = discipline_score(events, tactical_position)
print(result)
可视化:一眼看出纪律好坏
def plot_discipline(result):
metrics = list(result.keys())
values = list(result.values())
fig, ax = plt.subplots(figsize=(8,4))
bars = ax.barh(metrics, values, color=['#2ecc71' if v < 50 else '#e74c3c' for v in values])
ax.set_title('本场战术纪律执行概览')
ax.set_xlabel('数值(越低越纪律,传球成功率除外)')
for b, v in zip(bars, values):
ax.text(b.get_width(), b.get_y()+b.get_height()/2, f'{v:.2f}', va='center')
plt.tight_layout()
plt.show()
plot_discipline(result)
和赛季平均对比,看“本场是否执行到位”
season_avg = {'站位偏离度': 8.0, '犯规次数': 12, '低质量射门': 4, '传球成功率': 0.82}
compare = pd.DataFrame({
'本场': result,
'赛季平均': season_avg
})
compare['执行评价'] = np.where(
(compare['本场'] <= compare['赛季平均']) | (compare.index=='传球成功率'),
'达标', '需改进'
)
print(compare)
怎么解读结果
- 站位偏离度小 → 阵型保持好,战术纪律高
- 犯规次数低于赛季平均 → 防守动作克制
- 低质量射门少 → 进攻选择理性
- 传球成功率高 → 执行传控战术到位
- 如果某项明显高于平均 → 本场该环节纪律出问题
如果你说的是某个具体的Python案例
比如某个GitHub项目、某篇教程里的代码,把代码或数据字段发我,我可以直接帮你:
- 找到它计算纪律的逻辑在哪
- 指出本场结果怎么看
- 改成你要的指标
你现在的“案例”是足球、篮球,还是别的场景?数据长什么样?
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播