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

如何按状态分组绘制时序数据速度对比图并对齐时间起点

不同Status分组的速度时间折线图实现(统一时间起点)

数据示例

假设你的DataFrame结构如下(补充部分示例数据方便测试):

import pandas as pd

data = {
    'speed': [20, 30, 10, 15, 25, 8],
    'status': [True, True, False, False, True, False],
    'timestamp': ['9/10/2022 08:00', '9/10/2022 09:00', '9/08/2022 07:00', '9/09/2022 08:00', '9/10/2022 10:00', '9/09/2022 09:00']
}
df = pd.DataFrame(data)

实现步骤

1. 预处理数据:统一时间起点

先把时间列转成标准datetime格式,再找到两组status数据的最晚起始时间作为统一起点,过滤掉早于该时间的所有记录:

# 转换时间列为datetime类型,匹配你的时间格式
df['timestamp'] = pd.to_datetime(df['timestamp'], format='%m/%d/%Y %H:%M')

# 获取两组status的最早时间,取最大值作为统一起始点
true_min_time = df[df['status'] == True]['timestamp'].min()
false_min_time = df[df['status'] == False]['timestamp'].min()
unified_start_time = max(true_min_time, false_min_time)

# 过滤数据,只保留统一起点之后的记录
filtered_df = df[df['timestamp'] >= unified_start_time]

2. 分组绘制折线图

用matplotlib绘制,自动用不同颜色区分两组,同时添加图例和坐标轴标签:

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))

# 按status分组遍历绘图
for status, group in filtered_df.groupby('status'):
    plt.plot(group['timestamp'], group['speed'], label=f"Status: {status}", marker='o')

# 图表样式设置
plt.xlabel('时间')
plt.ylabel('速度')
plt.title('不同Status下速度随时间变化对比(统一时间起点)')
plt.legend()
plt.xticks(rotation=45)  # 旋转x轴标签避免重叠
plt.tight_layout()  # 自动调整布局
plt.show()

关键说明

  • 统一时间起点的逻辑:取两组数据最早时间的最大值,确保两组数据都从这个时间点开始展示,不会出现某组数据提前出现的情况。
  • 如果你的时间格式和示例不同,修改pd.to_datetime的format参数即可(比如时间是9/10/2022不带时分,就用%m/%d/%Y)。
  • 颜色可以自定义,给plot方法加color参数指定颜色值(如color='#ff0000')即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:40:20