线性插值时间序列数组中的间隙,在周末缺少值

时间:2014-11-11 14:09:56

标签: python

我通过阅读CSV文件创建了2个数组,其中包含日期和股票收盘价。我想插入数据,以便它填充'周末没有数据的差距,无法解决问题。

数据位于numpy数组中,日期为(0,1,2,3,4,7,8,9,10,11,14....),且价格相应,因此 ( Timestamp, value ) 对列表如下:

[(0.0, -0.39333333333333442), (1.0, -0.11333333333333329),
 (4.0, -0.17333333333333556), (5.0, -0.0033333333333338544),
 (6.0, -0.023333333333333428), (7.0, 0.046666666666666856),
 (8.0, 0.13666666666666671), (11.0, 0.12666666666666515),
 (12.0, 0.39666666666666472)]

1 个答案:

答案 0 :(得分:1)

np.interp的文档提供了一些非常好的示例(视觉均匀),向您展示如何插入数据。

将该方法应用于您的数据,为您提供:

import numpy as np
a = np.array([(0.0, -0.39333333333333442), (1.0, -0.11333333333333329),
            (4.0, -0.17333333333333556), (5.0, -0.0033333333333338544),
            (6.0, -0.023333333333333428), (7.0, 0.046666666666666856),
            (8.0, 0.13666666666666671), (11.0, 0.12666666666666515),
            (12.0, 0.39666666666666472)])

all_dates = np.arange(a[0,0], a[-1,0]+1) # assuming your 'dates' are always integers
lin_interp = np.interp(all_dates, a[:,0], a[:,1])

import matplotlib.pyplot as plt
plt.plot(all_dates, lin_interp, 'go:', ms=10)
plt.plot(a[:,0], a[:,1], 'bs:')
plt.show()

enter image description here

注意这只是一个简单的线性插值。无法保证这些周末期间的股票价格与插值所示的相同。