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

如何基于单个pandas DataFrame为各分类绘制离散时间桶时间序列图

实现方案

你当前的循环写法可正常运行,更符合pandas惯用风格的写法可以避免手动遍历分类,性能更高、代码更简洁,核心是利用groupby+重采样+行列转换直接生成可一键绘图的宽表结构:

优化后的实现代码

import pandas as pd
import matplotlib.pyplot as plt

# 读取与预处理数据
raw_df = pd.read_csv('...')
raw_df['time'] = pd.to_datetime(raw_df['time'])

# 一步完成分组、重采样聚合、格式转换,直接绘图
(
    raw_df.set_index('time')
    .groupby('name')['value']
    .resample('10T')
    .max()
    .unstack(level=0) # 把name分类从行索引转为列,每列对应一个分类的时间序列
    .plot()
)
plt.legend()
plt.show()

写法优势

  • 不需要手动提取唯一分类、排序、循环过滤数据,所有逻辑由pandas内部优化实现,数据量较大时性能明显优于手动循环
  • 代码逻辑更紧凑,原生支持分类自动排序、自动生成图例,不需要手动指定label
  • 如果需要自定义绘图轴,也可以把生成的宽表赋值给变量后指定ax参数:
fig, ax = plt.subplots(figsize=(12,6))
processed_df = (
    raw_df.set_index('time')
    .groupby('name')['value']
    .resample('10T')
    .max()
    .unstack(level=0)
)
processed_df.plot(ax=ax)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:54:03