You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将20份跑步记录DataFrame的心率数据整合到同一张箱线图展示

实现方案

核心思路是将20个独立的跑步记录DataFrame合并为带唯一跑步标识的总表,再调用可视化库绘制分组箱线图即可,完整实现流程如下:

1. 导入所需依赖

import pandas as pd
import matplotlib.pyplot as plt
# 可选:用seaborn绘制样式更美观的箱线图
import seaborn as sns

2. 批量合并20份跑步数据

假设20份记录文件统一命名为run_0.csv~run_19.csv且存放在同一目录下,合并代码如下:

all_run_data = []
for run_id in range(20):
    # 读取单份跑步记录
    single_run_df = pd.read_csv(f"run_{run_id}.csv")
    # 新增列标识当前是第几次跑步,用于后续分组
    single_run_df["跑步批次"] = f"第{run_id+1}次跑步"
    all_run_data.append(single_run_df)
# 合并为总表,不同长度的记录会自动对齐
total_df = pd.concat(all_run_data, ignore_index=True)

如果你的文件命名规则不同,只需修改循环内的文件读取路径,保证每个单表新增的「跑步批次」列是唯一标识即可。

3. 绘制箱线图

方法1:使用seaborn绘制(推荐,样式更友好)

plt.figure(figsize=(16, 7))
# x轴为跑步批次,y轴为心率列,注意替换为你实际的列名(你给出的示例写为Hears Rate,大概率是Heart Rate的拼写错误)
sns.boxplot(data=total_df, x="跑步批次", y="Heart Rate")
# 旋转x轴标签避免文字重叠
plt.xticks(rotation=30)
plt.title("20次跑步心率分布对比")
plt.xlabel("跑步记录批次")
plt.ylabel("心率(次/分钟)")
# 自动调整布局避免标签被截断
plt.tight_layout()
plt.show()

方法2:使用原生matplotlib绘制(无需额外安装seaborn)

# 直接提取每个批次的心率序列
hr_series_list = [df["Heart Rate"] for df in all_run_data]
plt.figure(figsize=(16, 7))
plt.boxplot(hr_series_list, labels=[f"第{i+1}次跑步" for i in range(20)])
plt.xticks(rotation=30)
plt.title("20次跑步心率分布对比")
plt.xlabel("跑步记录批次")
plt.ylabel("心率(次/分钟)")
plt.tight_layout()
plt.show()

两种实现方式都支持自动适配不同时长的跑步记录,最终输出的图中每个箱线对应单次跑步所有心率数据的分布统计,包含中位数、四分位距、异常值等信息。

内容的提问来源于stack exchange,提问作者sleli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:06:01