【问题标题】:Pandas timeseries comparison熊猫时间序列比较
【发布时间】:2014-10-08 23:36:06
【问题描述】:

我想获得两个时间序列的重叠部分之间的平均差异。但是,它们的范围和间隔都不同。解决这两个问题的最佳方法是什么?

示例数据:

Series 1:
2014-08-05 05:03:00    25.194      
2014-08-05 05:08:00    25.196      
2014-08-05 05:13:00    25.197      
2014-08-05 05:18:00    25.199      
2014-08-05 05:23:00    25.192      

Series 2:
2014-08-05 05:12:00    25.000000
2014-08-05 05:13:00    25.000000
2014-08-05 05:14:00    25.000000

【问题讨论】:

  • 你能举一些例子数据来说明这个问题吗?
  • 这个例子的期望输出是什么?
  • 系列之间的平均差异。
  • 那是什么?指标不一样,那么有什么区别呢?它们应该如何对齐?只显示预期的输出会更容易。
  • 如何使用插值对一个系列与另一个系列的索引进行重新采样?

标签: pandas time-series resampling


【解决方案1】:

这是你要找的吗?

首先你可以align两个系列(所以它们都有相同的索引。也可以只用reindex将两者中的一个重新索引到另一个的索引):

In [85]: s1, s2 = s1.align(s2)

In [86]: s1
Out[86]: 
2014-08-05 05:03:00    25.194
2014-08-05 05:08:00    25.196
2014-08-05 05:12:00       NaN
2014-08-05 05:13:00    25.197
2014-08-05 05:14:00       NaN
2014-08-05 05:18:00    25.199
2014-08-05 05:23:00    25.192
dtype: float64

In [87]: s2
Out[87]: 
2014-08-05 05:03:00   NaN
2014-08-05 05:08:00   NaN
2014-08-05 05:12:00    25
2014-08-05 05:13:00    25
2014-08-05 05:14:00    25
2014-08-05 05:18:00   NaN
2014-08-05 05:23:00   NaN
dtype: float64

然后您可以对缺失值进行插值(例如,使用基于时间索引的线性插值):

In [88]: s1.interpolate(method='time')
Out[88]: 
2014-08-05 05:03:00    25.1940
2014-08-05 05:08:00    25.1960
2014-08-05 05:12:00    25.1968
2014-08-05 05:13:00    25.1970
2014-08-05 05:14:00    25.1974
2014-08-05 05:18:00    25.1990
2014-08-05 05:23:00    25.1920
dtype: float64

然后只需减去两个系列即可获得差异:

In [91]: s = s1.interpolate(method='time') - s2.interpolate(method='time')

In [92]: s
Out[92]: 
2014-08-05 05:03:00       NaN
2014-08-05 05:08:00       NaN
2014-08-05 05:12:00    0.1968
2014-08-05 05:13:00    0.1970
2014-08-05 05:14:00    0.1974
2014-08-05 05:18:00    0.1990
2014-08-05 05:23:00    0.1920
dtype: float64

In [93]: s.mean()
Out[93]: 0.19643999999999906

【讨论】:

    猜你喜欢
    • 2021-09-14
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2019-09-17
    相关资源
    最近更新 更多