计算pandas中的滚动窗口成对相关性

时间:2017-04-12 21:56:42

标签: python pandas cross-correlation

我是python的新手,我正在尝试计算不同股票回报之间的滚动交叉相关性。我的数据框很大,它包含很多NaN。因此,rolling_corr()似乎不能很好地工作。

这是我的数据框的一部分 enter image description here

我创建了一个生成相关矩阵的函数,并以下列方式将其展开回数据框:

def corr_func(df,n=None):
    cmat = df.corr(method='pearson', min_periods=n)
    mask = np.ones(cmat.shape,dtype='bool')
    mask[np.triu_indices(len(cmat))] = False
    dfnew = cmat[cmat.notnull()&mask]    
    dfnew = dfnew.stack()
    dfnew = dfnew.reset_index(level=1)
    dfnew.columns = ['PERMNO2','Value']
    dfnew.reset_index(inplace=True)
    dfnew=dfnew.rename(columns = {'PERMNO':'PERMNO1'})
    # Associate with the window (first date and last date)
    df.reset_index(inplace=True)
    df.sort_values('date',inplace=True)
    dfnew['date_first'] = df['date'].iloc[0]
    dfnew['date_last'] = df['date'].iloc[-1]
    return(dfnew)

结果数据框汇总了样本中股票收益的唯一成对关联。以下是结果数据框的一部分: enter image description here

我尝试使用rolling_apply和此函数(corr_func)实现滚动交叉关联,但没有任何成功。 是否有一种优雅的方法可以使用rolling_apply或其他方法聚合数据框中的滚动互相关?

0 个答案:

没有答案