【发布时间】:2019-08-07 14:42:26
【问题描述】:
是否可以使用 pandas 中的滚动窗口和相关函数将较短的数据帧或序列与较长的数据帧或序列进行相关,并沿着较长的时间序列得到结果?基本上做 numpy.correlate 方法所做的事情,但不是互相关,而是做成对相关。
x= [0,1,2,3,4,5,4,7,6,9,10,5,6,4,8,7]
y= [4,5,4,5]
print(x)
print(y)
corrs = []
for i in range(0,len(x)-3):
corrs.append( np.corrcoef(x[i:i+4],y)[0,1] )
结果是:
[0.4472135954999579, 0.4472135954999579, 0.4472135954999579, 0.0, 0.8164965809277259, -0.4472135954999579, 0.8320502943378437, 0.0, -0.24253562503633297, 0.24253562503633297, -0.7683498199278325, 0.8451542547285166, -0.50709255283711]
windows 和 pairwise 的每个组合要么给出一系列 NAN,要么给出“ValueError: Length mismatch”。在我制作的简单测试用例中,它总是 NAN 或单个结果,但没有窗口。
x = pd.DataFrame(x)
y = pd.DataFrame(y)
corr = y.rolling(np.shape(y)[0]).corr(x)
print(corr)
corr = y.rolling(np.shape(x)[0]).corr(x)
print(corr)
corr = x.rolling(np.shape(x)[0]).corr(y)
print(corr)
corr = x.rolling(np.shape(y)[0]).corr(y)
print(corr)
corr = y.rolling(np.shape(y)[0]).corr(x,pairwise=True)
print(corr)
corr = y.rolling(np.shape(x)[0]).corr(x,pairwise=True)
print(corr)
corr = x.rolling(np.shape(x)[0]).corr(y,pairwise=True)
print(corr)
corr = x.rolling(np.shape(y)[0]).corr(y,pairwise=True)
print(corr)
【问题讨论】: