Python 在周末对缺失值的时间序列数组中的间隔进行线性插值

Python 在周末对缺失值的时间序列数组中的间隔进行线性插值,python,Python,我从一个包含日期和股票收盘价的CSV文件中读取了两个数组。我想对数据进行插值,这样它就“填补”了周末没有数据、也无法计算出如何填补的空白 数据只是在一个numpy数组中,带有日期,如(0,1,2,3,4,7,8,9,10,11,14…)和相应的价格,因此(时间戳,值)对的列表如下所示: [(0.0, -0.39333333333333442), (1.0, -0.11333333333333329), (4.0, -0.17333333333333556), (5.0, -0.00333333

我从一个包含日期和股票收盘价的
CSV
文件中读取了两个数组。我想对数据进行插值,这样它就“填补”了周末没有数据、也无法计算出如何填补的空白

数据只是在一个
numpy
数组中,带有日期,如
(0,1,2,3,4,7,8,9,10,11,14…)
和相应的价格,因此
(时间戳,值)
对的列表如下所示:

[(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)]
的文档提供了一些非常好的示例(甚至是可视化的),向您展示了如何插值数据

将该方法应用于您的数据,可以得到以下结果:

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()


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

到目前为止,您尝试过什么?你有什么问题不能解决,怎么解决?你基本上是在指出正确的解决方案(查找“numpy interpolate”)。我目前在一个(时间戳,value)列表中有如下值:[(0.0,-0.39333442),(1.0,-0.11333333329),(4.0,-0.173333556),(5.0,-0.0033338544),(6.0,-0.023333333428),(7.0,0.0466666666666856),(8.0,0.1366671),(11.0,0.126666515),(12.0,0.3966472)]我已经查过numpy插值和scipy插值,但不知道如何做我想要的。非常好!非常感谢