【发布时间】:2016-11-19 19:08:29
【问题描述】:
我正在尝试使用 Python/Pandas 构建一些图表。我有每秒采样的数据。这是一个示例:
Index, Time, Value
31362, 1975-05-07 07:59:18, 36.151612
31363, 1975-05-07 07:59:19, 36.181368
31364, 1975-05-07 07:59:20, 36.197195
31365, 1975-05-07 07:59:21, 36.151413
31366, 1975-05-07 07:59:22, 36.138009
31367, 1975-05-07 07:59:23, 36.142962
31368, 1975-05-07 07:59:24, 36.122680
我需要创建各种窗口来查看数据。 10、100、1000 等。不幸的是,当我尝试对整个数据框进行窗口化时,出现以下错误...
NotImplementedError: ops for Rolling for this dtype datetime64[ns] are not implemented
我查看了这些文档:http://pandas.pydata.org/pandas-docs/stable/computation.html 作为参考,他们似乎在日期范围内这样做。我确实注意到他们拥有的和我拥有的数据类型不同。
有没有简单的方法可以做到这一点?
这就是我想要做的理想:
tmp = data.rolling(window=2)
tmp.mean()
我正在使用 plotly 来绘制原始数据,然后在其上绘制窗口数据。我的目标是找到理想的窗口来识别数据中更清晰的趋势,从而消除一些噪音。
谢谢!
补充说明:
我认为我需要采用这种格式的数据:
pandas.core.series.Series 给这个:
pandas.tseries.index.DatetimeIndex
【问题讨论】:
-
您可能会遇到该错误,因为您正在尝试计算所有列的平均值,包括 datetime 列。如果你这样做
data.Value.rolling(window=2).mean()会起作用吗? -
是的,但问题是,如果我这样做了,我是不是必须通过将这些新值与它们相关联的时间进行排列的过程?
-
您可以将日期列移动到索引中。
-
如果这么简单,我会气死自己的……现在就试试吧……
-
是的,您使用的索引只是日期的
int版本。我忘记了它叫什么,但我想我从 excel 中认出了它们。
标签: python pandas time-series