【问题标题】:Downsample time series to N equally spaced points将时间序列下采样到 N 个等距点
【发布时间】: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


【解决方案1】:

任何想法、提示

  • 通过从最新中减去最旧来找到时间跨度
  • 通过将 Span 除以 N-1 找到一个理想的周期
  • 为最旧的样本添加一个句点
    • 找到最接近那个时间的样本
  • 向最旧的样本添加两个句点
    • 找到最接近那个时间的样本
  • 重复...

如果一开始有一堆样本相距甚远,那么最后一堆靠近的样本将不起作用。也许返回选择的样本并丢弃任何太接近的样本 - 减少N

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-02
    • 2018-12-04
    • 2018-06-04
    • 2022-09-27
    • 2012-11-26
    • 2011-11-12
    • 2014-06-02
    相关资源
    最近更新 更多