我正在学习python,并想知道下面的代码在Python中做了什么:
def inter_lin_nan(ts, rule):
ts = ts.resample(rule)
mask = np.isnan(ts)
ts[mask] = np.interp(np.flatnonzero(mask), np.flatnonzero(~mask), ts[~mask])
return(ts)
我知道这是一个对时间序列数据进行插值的函数,第二行根据规则重新采样数据(例如1小时)。第四和第五行怎么样?这个插值是如何完成的? np.interp
需要什么值,~mask
是什么?
答案 0 :(得分:2)
这在文档中有详细描述:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.interp.html
numpy.interp(x,xp,fp,left = None,right = None,period = None)[来源] 一维线性插值。
将一维分段线性插值返回到函数 在离散数据点给定值。
所以行ts[mask] = np.interp(np.flatnonzero(mask), np.flatnonzero(~mask), ts[~mask])
只是将已知值插入NaN
s(在前一行中标识,其索引在mask
中编码)。
答案 1 :(得分:0)
pandas.Series.resample允许您按照规则拍摄时间序列并以不同的频率对其进行采样。假设您有一系列每日49次观察,并且您希望获得一系列7周的方法作为回报。它为你做到了这一点,然后你使用numpy.interp来估算任何以南方形式返回的值。