大熊猫时间序列使用时间相对于开始

时间:2013-02-14 03:51:22

标签: python pandas

我正在从文件中读取一些csv日志数据,并使用日期,时间字段作为框架的索引。当我绘制时间序列时,绝对时间以X轴显示。我想在x轴上显示相对于开始时间的时间。怎么做?

例如:这是一个示例x轴:

 23:59:57--------+23:59:58----------23:59:59--------+00:00:00--------------+

我想这样:

 0---------00:00:01----------00:00:02--------+00:00:03--------------+

2 个答案:

答案 0 :(得分:3)

一个简单的解决方案是从索引中减去第一个索引项。它可以通过使用列表推导来完成,如果您的Dataframe非常大,这可能不是最好的(最快的)选项。

begin = pd.datetime(2013,1,5,5,53)
end = pd.datetime(2013,1,7,7,16)

rng = pd.DatetimeIndex(start=begin, end=end, freq=pd.datetools.Minute(15))
df = pd.DataFrame(np.random.randn(rng.size), index=rng)

fig, axs = plt.subplots(2,1, figsize=(15,6))
fig.subplots_adjust(hspace=.5)

df.plot(ax=axs[0])
axs[0].set_title('Original')

df.index = [idx - df.index[0] for idx in df.index]
df.plot(ax=axs[1])
axs[1].set_title('Normalized')

enter image description here

答案 1 :(得分:2)

Here is the output after I did relative time normalization

由于索引的数据类型从DatetimeIndex更改为对象,因此每行都在不同的存储桶中打印。