将一系列Timedeltas细分为分钟图(pandas)

时间:2015-05-19 00:10:09

标签: python pandas matplotlib dataframe

我有一个数据框,索引为Timedelta,范围从0到5分钟,还有一列浮点数。

这是一个示例子集:

32  0.740283
34  0.572126
36  0.524788
38  0.509685
40  0.490219
42  0.545977
44  0.444170
46  1.098387
48  2.209113
51  1.426835
53  1.536439
55  1.196625
56  1.923569

左边是以秒为单位的timedelta,右边是浮点数。

问题是当用熊猫绘图时,我得到一个带有标签的x轴,如:
0天00:00:00,0天00:01:10,0天00:02:15

等等。有没有什么方法可以重新采样(错误的单词?)数据,这样我就能在一分钟的基础上拥有轴,同时仍然将数据点保持在正确的位置?

示例代码/数据:

df = pd.DataFrame({'td':[32,34,36,38,40,42,44,51,53,152,283],
                   'val': np.random.rand(11)})

df.index = df.td.map(lambda x: pd.Timedelta(seconds=x.astype(int)))
df.drop(['td'], axis=1, inplace=True)
df.val.plot()

2 个答案:

答案 0 :(得分:1)

Pandas仅提供绘图功能以方便使用。要完全控制,您需要直接使用Matplotlib。

作为一种解决方法,您可以使用datetime而不是timedelta作为索引。只要您的时间跨度在几分钟之内,熊猫就不会在一天或一个月内进行策划。

要使用您的示例,这可以:

df = pd.DataFrame({'td':[32,34,36,38,40,42,44,51,53,152,283],
                   'val': np.random.rand(11)})
df.index = [dt(2010, 1, 1) + timedelta(seconds=int(i)) for i in df.td]
df.drop(['td'], axis=1, inplace=True)
df.val.plot()

time series plot

答案 1 :(得分:0)

这是你想要的吗?

Paint