2016-12-31 24 views
1

2台のパンダシリーズ間の累積相関を見つけるための組み込みパンダの方法はありますか?パンダ "累積" rolling_corr

pandas.rolling_corr(data、window)にウィンドウの左側を効果的に固定することで、ウィンドウの幅が広がり、最終的にウィンドウにすべてのデータポイントが含まれるようにする必要があります。

答えて

0

これは片方向で、インデックスにはmapがあり、増加するサイズのシリーズにはcorrを適用します。

In [116]: df.index.map(lambda x: df[col1].corr(df.loc[:x, col2])) 

詳細

In [112]: df = pd.DataFrame(pd.np.random.rand(10,2)) 

In [113]: df 
Out[113]: 
      0   1 
0 0.094958 0.891910 
1 0.482616 0.551912 
2 0.877540 0.573768 
3 0.839921 0.328452 
4 0.334714 0.908346 
5 0.530518 0.837590 
6 0.285152 0.126937 
7 0.386568 0.474815 
8 0.279807 0.939694 
9 0.741882 0.135982 

In [114]: df['roll_corr'] = df.index.map(lambda x: df[0].corr(df.loc[:x, 1])) 

In [115]: df 
Out[115]: 
      0   1 roll_corr 
0 0.094958 0.891910  NaN 
1 0.482616 0.551912 -1.000000 
2 0.877540 0.573768 -0.832929 
3 0.839921 0.328452 -0.848385 
4 0.334714 0.908346 -0.839698 
5 0.530518 0.837590 -0.791736 
6 0.285152 0.126937 -0.312806 
7 0.386568 0.474815 -0.283357 
8 0.279807 0.939694 -0.354385 
9 0.741882 0.135982 -0.459907 

検証

In [121]: df.corr() 
Out[121]: 
      0   1 
0 1.000000 -0.459907 
1 -0.459907 1.000000 

In [122]: df[:5].corr() 
Out[122]: 
      0   1 
0 1.000000 -0.839698 
1 -0.839698 1.000000 
+0

ありがとうございました。 Pandasの開発コミュニティがすべてのローリング方法(rolling_corr/mean/stdなど)を調整して、ブール値の「累積」パラメータを取ることができれば価値があると思います。 'rolling_method(data、window、cum = False)'のようなものです。 – Javad