如何用Pandas将多维数据转换为时间序列并绘制图表?
用Pandas处理多维度时间序列并绘图
我有如下格式的数据:
Timestamp, Dimension, Value t1, d1, v1 t2, d1, v2 t3, d1, v3 ... tn, d2, v4 tn+1, d2, v4 ... tm, d1, v5 ...能否通过Pandas将其转换为多组时间序列,以Timestamp为X轴、Value为Y轴绘制d1、d2……dn的图表?
更新:df.head().to_dict()的输出如下:
{'Timestamp': {0: 1696603859.706954, 1: 1696603859.707053, 2: 1696603859.707162, 3: 1696603859.707236, 4: 1696603859.707281}, ' Dim': {0: 'WT', 1: 'WH-0x00', 2: 'WH-0x80', 3: 'WH-Others', 4: 'WT-0x00'}, ' Value': {0: 24, 1: 1, 2: 1, 3: 1, 4: 41}, ' Count': {0: 24, 1: 44, 2: 44, 3: 44, 4: 44}}
完全可以实现,以下是具体步骤:
1. 数据预处理
首先读入数据并清理格式,注意你的列名带有首尾空格(比如' Dim'、' Value'),需要先处理:
import pandas as pd import matplotlib.pyplot as plt # 读入CSV数据(如果是其他格式,替换对应读取方法) df = pd.read_csv('your_data_file.csv') # 清理列名,去掉首尾空格 df.columns = df.columns.str.strip() # 将时间戳转换为可识别的datetime格式 df['Timestamp'] = pd.to_datetime(df['Timestamp'], unit='s')
2. 转换为多列时间序列格式
使用pivot方法把不同维度转成独立列,时间戳作为索引:
# 转换为宽格式:时间戳为索引,每个维度对应一列数值 wide_df = df.pivot(index='Timestamp', columns='Dim', values='Value')
转换后,每个维度(如WT、WH-0x00)会成为单独的列,每一行对应一个时间点的各维度数值。
3. 绘制多维度时间序列图
直接利用Pandas的绘图接口快速生成图表,也可以用matplotlib自定义样式:
# 绘制图表,设置画布大小和标签 wide_df.plot(figsize=(12, 6), xlabel='时间', ylabel='数值') plt.title('各维度时间序列变化趋势') plt.legend(title='维度') plt.show()
补充:处理缺失值
如果转换后存在NaN(部分时间点某些维度无数据),可以根据需求填充,比如前向填充:
wide_df = wide_df.fillna(method='ffill')
内容的提问来源于stack exchange,提问作者avrono
相关产品推荐
相关产品推荐

