【问题标题】:How to do interpolation on datetime and float如何对日期时间和浮点数进行插值
【发布时间】:2014-09-22 07:11:32
【问题描述】:

我在时间序列上使用scipy 进行一维插值。我的 x 轴数据是日期时间格式,y 轴是浮点数,如:

3/15/2012 16:00:00  32.94
3/16/2012 16:00:00  32.95
3/19/2012 16:00:00  32.61

现在在斜率计算slope = (y_hi-y_lo) / (x_hi-x_lo) 期间,我收到错误TypeError: unsupported operand type(s) for /: 'float' and 'datetime.timedelta',这是一个明显的错误。有人能指出我正确的方向吗,如何处理?

【问题讨论】:

    标签: python python-2.7 scipy interpolation


    【解决方案1】:

    您的问题是您试图将浮点数除以 datetime.timedelta 对象,正如您所说,这显然会引发 TypeError。

    您可以使用datetime.timedelta.total_seconds() 实例方法将datetime.timedelta 对象转换为表示该时间增量内总秒数的浮点数。

    在这种情况下,您可以将代码修改为:

    slope_numerator = y_hi - y_lo
    slope_denominator = (x_hi - x_lo).total_seconds()
    slope = slope_numerator / slope_denominator
    

    请注意,这将以秒为单位提供斜率。您可以修改分母,以小时、天等形式给出以适合您的目的。

    【讨论】:

      【解决方案2】:

      如果您使用TimeSeries数据,Pandaspack是一个很好的选项。以下是通过插值将每日数据上采样为每小时数据的示例:

      import numpy as np
      from pandas import *
      rng = date_range('1/1/2011', periods=12, freq='D')
      ts = Series(np.arange(len(rng)), index=rng)
      resampled = ts.resample('H')
      interp = resampled.interpolate()
      
      在[5]中:TS out [5]: 2011-01-01 0. 2011-01-02 1 2011-01-03 2 2011-01-04 3. 2011-01-05 4 2011-01-06 5 2011-01-07 6 2011-01-08 7 2011-01-09 8 2011-01-10 9 2011-01-11 10 2011-01-12 11 在[12]:Interp.head() out [12]: 2011-01-01 00:00:00 0.000000 2011-01-01 01:00:00 0.041667 2011-01-01 02:00:00 0.083333. 2011-01-01 03:00:00 0.125000 2011-01-01 04:00:00 0.166667 FREQ:H,DTYPE:FLOAT64 在[13]中:Interp.tail() out [13]: 2011-01-11 20:00:00 10.833333 2011-01-11 21:00:00 10.875000 2011-01-11 22:00:00 10.916667 2011-01-11 23:00:00 10.958333 2011-01-12 00:00:00 11.000000 频率:H,数据类型:float64

      【讨论】:

      • 这似乎很酷。您可以在代码中添加一些 cmets 以使其更易于理解吗?你也可以避免from pandas import *,所以很明显哪些函数调用是对pandas的?谢谢!
      猜你喜欢
      • 2014-09-05
      • 2017-02-03
      • 2015-03-11
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 2022-01-14
      • 2020-12-11
      • 1970-01-01
      相关资源
      最近更新 更多