【发布时间】:2021-11-17 06:38:27
【问题描述】:
假设我有一个时间戳列表和某个事件的相关索引。我有 M 个不均匀间隔的时间戳。我想将此列表下采样到 N
timestamps =
[(Timestamp('2013-10-05 12:52:00+0000', tz='UTC'), 0),
(Timestamp('2013-10-07 18:38:00+0000', tz='UTC'), 1),
(Timestamp('2013-10-12 11:30:00+0000', tz='UTC'), 5),
(Timestamp('2013-10-13 11:58:00+0000', tz='UTC'), 7),
(Timestamp('2013-10-14 17:26:00+0000', tz='UTC'), 11),
(Timestamp('2013-10-16 17:54:00+0000', tz='UTC'), 12),
(Timestamp('2013-10-17 21:26:00+0000', tz='UTC'), 14),
(Timestamp('2013-10-20 13:37:00+0000', tz='UTC'), 17),
(Timestamp('2013-10-22 18:16:00+0000', tz='UTC'), 18),
(Timestamp('2013-10-25 23:37:00+0000', tz='UTC'), 19),
(Timestamp('2013-10-26 13:36:00+0000', tz='UTC'), 20),
(Timestamp('2013-10-30 19:11:00+0000', tz='UTC'), 26),
(Timestamp('2013-11-07 21:13:00+0000', tz='UTC'), 28),
(Timestamp('2013-11-08 13:16:00+0000', tz='UTC'), 29),
(Timestamp('2013-11-15 18:19:00+0000', tz='UTC'), 32),
(Timestamp('2013-11-16 00:27:00+0000', tz='UTC'), 33),
(Timestamp('2013-11-16 18:55:00+0000', tz='UTC'), 35),
(Timestamp('2013-12-04 16:58:00+0000', tz='UTC'), 40),
(Timestamp('2013-12-18 09:48:00+0000', tz='UTC'), 47),
(Timestamp('2013-12-19 08:32:00+0000', tz='UTC'), 50)]
假设M=20 和上面的示例一样,还有N=15。有没有智能/已知的方法来做到这一点?我唯一想到的是计算每个时间戳之间的时间增量,然后尝试基于最大化中值时间增量进行一些搜索/优化/遗传算法,这样我们就不会得到时间上非常接近的多个点和一些很远的点.另一种选择可能是在起点和终点之间生成 N 个等距点,并尝试将最接近的现有点与人工点匹配。我查看了 pandas resample,但它并没有按照我想要的方式进行下采样,我需要在我的列表中留下一个确切的 N 元素数量。任何想法,提示表示赞赏。
【问题讨论】:
-
我认为 M=20,不是吗?
-
您是否不希望事件索引发生突变?
-
您是否有足够的数据来获得样本之间差异的可靠标准差或方差?
-
“我想将此列表下采样到 N 除非时间戳在原始列表中是等距的。在您的示例中,它们的间距不均匀。您所拥有的是相互冲突的要求:1)使用输入列表中的时间戳,2)使用间隔均匀的时间戳。必须放弃其中一项要求。要么生成均匀间隔的时间戳,并为这些时间插入数据,要么接受所选时间戳的间隔不均匀(甚至不接近)。
标签: python pandas algorithm timestamp downsampling