当前位置: 首页 > news >正文

Keep运动数据分析指南:用Python发现你的跑步习惯与进步曲线

Keep运动数据分析指南:用Python发现你的跑步习惯与进步曲线

跑步爱好者们常说"数据不会说谎",但面对Keep导出的海量JSON数据,很多人却无从下手。本文将带你用Python从零开始构建个人跑步数据分析系统,不仅教你解析数据,更重要的是教会你如何从这些数字中读懂自己的身体信号和训练效果。

1. 数据获取与初步探索

首先需要从Keep导出你的运动数据。登录Keep官网,进入"个人中心"-"数据导出",选择需要的时间范围提交申请。通常24小时内会收到包含所有运动记录的ZIP压缩包。

解压后你会发现几个关键JSON文件:

  • workouts.json:包含每次运动的概要信息
  • routes.json:记录GPS轨迹和配速变化
  • achievements.json:保存所有成就和里程碑
import json import pandas as pd # 加载基础运动数据 with open('workouts.json', 'r', encoding='utf-8') as f: workouts = json.load(f) df = pd.DataFrame(workouts['data']) print(f"共加载{len(df)}条运动记录") print(df[['start_time', 'duration', 'distance', 'calorie']].head())

典型输出示例:

共加载287条运动记录 start_time duration distance calorie 0 2023-03-15 06:30:00 1824 5.21 328 1 2023-03-16 06:45:00 1920 5.43 342 2 2023-03-17 07:00:00 1788 5.12 321

2. 核心指标计算与趋势分析

有了基础数据后,我们可以计算几个关键指标:

指标名称计算公式分析价值
周跑量每周跑步距离总和观察训练负荷变化
平均配速总时间(分钟)/总距离(公里)评估整体速度水平
心率区间占比不同心率区间时长/总时长了解训练强度分布
步频总步数/总时间(分钟)评估跑步经济性
# 转换时间格式并计算周统计 df['start_time'] = pd.to_datetime(df['start_time']) weekly = df.resample('W', on='start_time').agg({ 'distance': 'sum', 'duration': ['sum', 'count'], 'calorie': 'sum' }) # 计算配速(分钟/公里) weekly['pace'] = weekly['duration']['sum']/60 / weekly['distance']['sum']

关键发现技巧

  • 使用rolling(4).mean()计算4周移动平均线,平滑短期波动
  • 配合matplotlib绘制双轴图表,同时展示跑量和配速趋势
  • 标注特殊事件(如比赛、伤病)时间点,分析其对数据的影响

3. 训练周期识别与状态评估

通过聚类算法可以自动识别不同的训练阶段:

from sklearn.cluster import KMeans # 提取特征:周跑量、平均配速、单次最长距离 features = weekly[['distance', 'pace']].copy() features['longest'] = df.resample('W', on='start_time')['distance'].max() # 标准化并聚类 from sklearn.preprocessing import StandardScaler scaler = StandardScaler() kmeans = KMeans(n_clusters=3) clusters = kmeans.fit_predict(scaler.fit_transform(features)) weekly['phase'] = clusters

典型训练阶段特征:

阶段类型跑量特征配速特征建议行动
基础期平稳中高较慢且稳定保持有氧耐力训练
提升期波动上升逐渐加快加入间歇训练
恢复期明显下降不稳定充分休息恢复

注意:当连续两周数据落入恢复期聚类时,可能是过度训练的信号,建议主动调整

4. 可视化报告生成

综合使用以下可视化技术生成易读的报告:

热力图日历

import calmap # 准备每日跑量数据 daily = df.resample('D', on='start_time')['distance'].sum() plt.figure(figsize=(16, 8)) calmap.yearplot(daily, year=2023, cmap='YlGn')

交互式轨迹地图

import folium # 选取一次典型跑步的GPS轨迹 with open('routes/123456.json') as f: route = json.load(f) coords = [(p['latitude'], p['longitude']) for p in route['points']] m = folium.Map(location=coords[0], zoom_start=14) folium.PolyLine(coords, color='blue').add_to(m) for i, p in enumerate(route['points'][::30]): # 每30个点标记一次 folium.Marker( (p['latitude'], p['longitude']), popup=f"配速: {p['pace']}/km<br>心率: {p['heart_rate']}" ).add_to(m)

综合仪表盘制作步骤

  1. 使用plotly.subplots创建多图表布局
  2. 左上角放置月度跑量柱状图
  3. 右上角展示配速-心率散点图
  4. 下方布置周跑量热力图
  5. 添加交互式筛选控件(按时间、距离范围等)

5. 进阶分析技巧

对于有编程基础的用户,可以尝试这些深度分析方法:

跑步经济性评估

# 计算效率指数(越低越好) df['efficiency'] = df['avg_heart_rate'] / df['pace'] # 与温度的关系 df['temperature'] = df['weather'].apply(lambda x: x['temp']) plt.scatter(df['temperature'], df['efficiency'])

训练负荷计算

# 使用TRIMP算法量化训练负荷 df['trimp'] = df['duration'] * df['avg_heart_rate'] * 0.64 * \ np.exp(1.92 * df['avg_heart_rate'] / max_hr)

预测模型构建

from sklearn.ensemble import RandomForestRegressor # 准备特征:前一周数据、天气、作息等 X = pd.DataFrame({ 'last_week_distance': weekly['distance'].shift(1), 'last_week_pace': weekly['pace'].shift(1), 'temperature': weekly['weather'].apply(lambda x: x['avg_temp']) }) # 预测下周最大可持续距离 model = RandomForestRegressor() model.fit(X[:-1], weekly['distance'][1:])

实际项目中,我将这些分析封装成了自动化脚本,每周日晚上自动运行生成报告,周一早晨就能收到最新的训练洞察。经过半年数据追踪,我的月跑量从120公里提升到180公里,而平均心率却下降了5bpm,这种数据驱动的进步让人成就感十足。

http://www.jsqmd.com/news/516038/

相关文章:

  • 逆向解析京东sign加密算法的实战过程
  • Pixel Dimension Fissioner代码实例:自定义裂变模板与输出格式控制
  • 嵌入式系统中七大底层数据结构实战解析
  • 无人机视角智慧农业水稻生长周期水稻生长状态检测数据集VOC+YOLO格式5413张3类别
  • 保姆级教程:用DISM++和WePE在5分钟内搞定Win10 22H2 Oct版系统安装
  • Stata进阶可视化技巧:从基础绘图到专业图表优化
  • 嵌入式工程师的破局跃迁:从信息不对称到系统可靠性
  • KeePassXC浏览器扩展完全指南:本地密码管理的安全实践
  • 计算机组成原理视角:分析Ostrakon-VL-8B模型推理的GPU计算与存储瓶颈
  • Nextion字符串通信库:ESP32轻量级HMI交互方案
  • RK3568开发板实战:手把手教你编译RTL8723DU驱动(附常见错误解决方案)
  • 漫画脸描述生成惊艳效果:古风角色+发簪纹样+衣料质感+诗词气质生成
  • 嵌入式传感器抽象库AD_Sensors设计与实践
  • msvcr110_clr0400.dll文件免费下载方法分享
  • 计算机毕业设计:Python图书个性化推荐与可视化分析平台 Django框架 协同过滤推荐算法 可视化 书籍 数据分析 大数据 大模型(建议收藏)✅
  • Python遗传规划实战:用gplearn和DEAP解决符号回归问题(附完整代码)
  • AC/DC/DC模拟EV充电仿真。 前级采用两相交错PFC boost,后级采用移相全桥隔离变换器
  • 编译器未告诉你的真实功耗代价,裸机C代码每行能耗实测数据曝光,立即停用这3个“节能假象”写法
  • Wan2.2-T2V-A5B优化技巧:如何让RTX 3060显卡发挥最大效能?
  • 实测LFM2.5-1.2B-Thinking:职场文案、创意写作、逻辑校验全搞定
  • 别再只用YOLOv8了!手把手教你用PaddleOCR实现高精度车牌识别(附完整代码)
  • Wan2.1-UMT5企业级集成实战:与.NET后端服务通信的完整方案
  • 让Mac鼠标滚动丝滑如触控板:Mos终极配置指南
  • MySQL数据库存储方案:管理万象熔炉·丹青幻境的海量生成记录
  • UG NX 12.0安装全流程:从下载到配置的保姆级教程(含许可证设置)
  • 使用Nano-Banana Studio构建服装设计知识图谱
  • STM32F746NG LCD驱动:LTDC+DMA2D双缓冲显示实现
  • Pixel Dimension Fissioner企业应用:审计日志+操作留痕+权限分级管理模块
  • PyCharm与Anaconda环境配置全攻略:从零搭建Python开发环境
  • 5分钟部署腾讯混元翻译模型:HY-MT1.5-1.8B Docker一键搭建教程