网格时间序列避免NANs的相关性

时间:2017-06-02 04:46:35

标签: python arrays pandas time-series correlation

我正在寻找一种计算两个网格化时间序列相关性的方法。两者都具有相同的形状(432,55,144),即(时间步长,纬度,经度)。正如你在下面的图片中看到的那样,我已经成功使用了它并得到了一个二维数组,所有相关系数都是:

corrvalue = []
if data1.shape==data2.shape:
    corrcoefMatrix = [[0 for i in range(len(longitudes))] for j in range(len(latitudes))] 
    for x in range(len(latitudes)):
        for y in range(len(longitudes)):
            corrvalue = np.corrcoef(data1[:,x,y],data2[:,x,y])
            corrcoefMatrix[x][y] = corrvalue[0,1]

        corrcoefMatrix = np.squeeze(np.asarray(corrcoefMatrix))

correlation of my two data sets

然而,有一些NAN导致白色缺失值斑点。即使432长时间序列中只有一个缺失值,相关系数也是NAN。根据{{​​3}}大熊猫似乎是最好的选择。但是,它只接受二维数组,因此我通过使用来自this post的Jarads答案来转换我的数据

df1 = pd.DataFrame([list(l) for l in data1]).stack().apply(pd.Series).reset_index(0,drop=True)
df2 = pd.DataFrame([list(l) for l in data2]).stack().apply(pd.Series).reset_index(0,drop=True)

并使用df.corrwith(df2)。这给了我一个144维长阵列,而不是我想要的55x144阵列。必须有一个相当简单的方法,因为这种与缺失值的相关性经常使用,但它没有很好地记录,或者我找不到它。

0 个答案:

没有答案