综合实用脚本,高速跑动距离对比?

wen 实用脚本 2

本文目录导读:

综合实用脚本,高速跑动距离对比?

  1. 脚本功能
  2. 完整Python脚本
  3. 如何应用到你的真实数据?
  4. 输出的关键指标解释
  5. 快速使用指南

我可以为你提供一套完整的“综合实用脚本”,用于当你拿到原始跑动数据(如GPS追踪数据或比赛统计表)时,快速生成高速跑动距离对比图

这套脚本基于 Python,适合体育分析师、教练或数据爱好者使用。


脚本功能

  • 输入:两份CSV文件(包含运动员在不同速度区间的时间/距离)。
  • 指标定义:高速跑动通常指 >19.8 km/h(或 >5.5 m/s),冲刺跑通常指 >25.2 km/h(或 >7.0 m/s),脚本允许自定义阈值。
  • 输出:并排柱状图、雷达图以及关键数值汇总。

完整Python脚本

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# 设置中文显示(根据操作系统调整字体)
plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows
# plt.rcParams['font.sans-serif'] = ['PingFang HK']  # Mac
plt.rcParams['axes.unicode_minus'] = False
# ======================
# 1. 数据输入区(可替换为你的数据)
# ======================
# 示例数据:12名球员的高速跑动距离(米),阈值:>19.8 km/h
data = {
    '球员': ['球员A', '球员B', '球员C', '球员D', '球员E', '球员F'],
    '比赛1': [320, 450, 280, 510, 390, 300],
    '比赛2': [300, 420, 310, 480, 360, 340],
    '比赛3': [350, 460, 290, 530, 410, 310],
}
df = pd.DataFrame(data)
# 如果你有CSV文件,使用以下代码读取:
# df = pd.read_csv('your_data.csv')  # 确保包含'球员'列
# ======================
# 2. 核心计算逻辑
# ======================
def calculate_high_speed_metrics(df, speed_zone='高速'):
    """
    计算不同比赛的高速跑动距离
    参数speed_zone: '高速' (>19.8km/h) 或 '冲刺' (>25.2km/h)
    """
    if speed_zone == '冲刺':
        multiplier = 0.6  # 模拟冲刺距离占比(实际应用中请直接使用原始数据)
    else:
        multiplier = 1.0
    # 实际应用时,你的数据应包含速度区间,这里仅为示例
    metric_cols = [col for col in df.columns if col.startswith('比赛')]
    df_result = df.copy()
    for col in metric_cols:
        df_result[col + '_' + speed_zone] = df[col] * multiplier
    return df_result
# 计算平均高速跑动距离
df['平均高速距离'] = df[['比赛1', '比赛2', '比赛3']].mean(axis=1)
# ======================
# 3. 数据对比可视化
# ======================
# 3.1 并排柱状图(每场比赛)
plt.figure(figsize=(14, 7))
x = np.arange(len(df['球员']))
width = 0.25
for i, col in enumerate(['比赛1', '比赛2', '比赛3']):
    plt.bar(x + i*width, df[col], width, label=col)
plt.xlabel('球员', fontsize=12)
plt.ylabel('高速跑动距离 (m)', fontsize=12)'球员高速跑动距离对比(>19.8 km/h)', fontsize=14)
plt.xticks(x + width, df['球员'])
plt.legend()
plt.grid(axis='y', alpha=0.3)
plt.tight_layout()
plt.show()
# 3.2 平均高速距离排名(水平条形图)
plt.figure(figsize=(10, 6))
df_sorted = df.sort_values('平均高速距离', ascending=True)
plt.barh(df_sorted['球员'], df_sorted['平均高速距离'], color='skyblue')
plt.xlabel('平均高速跑动距离 (m)', fontsize=12)'球员平均高速跑动距离排名(3场比赛均值)', fontsize=14)
for index, value in enumerate(df_sorted['平均高速距离']):
    plt.text(value, index, f' {value:.0f}m', va='center')
plt.tight_layout()
plt.show()
# 3.3 热力图(球员 vs 比赛)
plt.figure(figsize=(12, 6))
pivot_df = df.pivot_table(index='球员', values=['比赛1', '比赛2', '比赛3'])
plt.imshow(pivot_df.values, cmap='YlOrRd', aspect='auto')
plt.colorbar(label='距离 (m)')
plt.xticks(range(3), ['比赛1', '比赛2', '比赛3'])
plt.yticks(range(len(df)), df['球员'])'高速跑动距离热力图', fontsize=14)
# 添加数值标注
for i in range(len(df)):
    for j in range(3):
        plt.text(j, i, f'{df.iloc[i, j+1]:.0f}', ha='center', va='center', color='black')
plt.tight_layout()
plt.show()
# ======================
# 4. 输出关键统计摘要
# ======================
print("\n===== 高速跑动距离统计摘要 =====")
print(df[['球员', '平均高速距离']].sort_values('平均高速距离', ascending=False).to_string(index=False))
print(f"\n最高平均:{df.loc[df['平均高速距离'].idxmax(), '球员']} ({df['平均高速距离'].max():.0f}m)")
print(f"最低平均:{df.loc[df['平均高速距离'].idxmin(), '球员']} ({df['平均高速距离'].min():.0f}m)")
print(f"全队平均:{df['平均高速距离'].mean():.0f}m")

如何应用到你的真实数据?

如果需要接入真实比赛数据,你需要将代码中的 数据输入区 替换为真实的GPS数据文件,通常GPS系统(如Catapult、STATSports)导出的CSV格式如下:

| 球员 | 日期 | 比赛或训练 | 总距离(m) | 高速距离(>19.8km/h) | 冲刺距离(>25.2km/h) | ... |

修改第20-30行代码,将数据读取方式改为:

df = pd.read_csv('gps_data.csv')
# 如果你需要的列名不同,筛选并重命名:
df = df[['球员', '高速距离', '冲刺距离']]  # 根据实际列名调整

输出的关键指标解释

  • 高速跑动距离:指速度 > 19.8 km/h(或5.5 m/s)的跑动总距离,反映球员的高强度爆发能力。
  • 冲刺跑距离:指速度 > 25.2 km/h(或7.0 m/s)的跑动距离,反映绝对速度能力。
  • 对比维度:既可以横向对比不同球员,也可以纵向对比不同比赛场次(体能消耗、战术执行)。

快速使用指南

  1. 复制上面的代码到 .py 文件中。
  2. 将你的数据填入 data 字典,或替换为 pd.read_csv()
  3. 确保已安装 pandas、matplotlib:
    pip install pandas matplotlib
  4. 运行脚本,即可看到三种不同形式的对比图(柱状图、条形图、热力图)。

如果你能提供具体的数据文件格式或说明目前的工具链(如Excel、SPSS),我可以帮你进一步定制该脚本。

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