2017-01-29 8 views
0

データフレームには、日付で索引付けされた500列のデータフレームと4年間のデータがあります。インデックスごとのベクトル行の計算相関データフレーム

|日付| | AAL | AAP | AAPL | ABC ......

| 1/2/2004 | 18.442521 | 25.954398 | 1.38449 | 11.528444 ......

| 1/5/2004 | 18.922795 | 25.718507 | 1.442394 | 11.919131 ...

| 1/6/2004 19.518334 | 26.177538 | 1.437189 | 11.870028 ....

。 。等...

私は、各行のように、毎日のピアソン相関行列を計算したいと思います。私は、Rで読むことができる最もスペース効率のよい方法で、日付でマトリックスを保存したいと思います。(今、私の目標は、インデックスの日付別に、Excelで提案しています)。

私はいくつか試しました私はcorr()をdf.groupbyに適用することができなかったので、これは最も有望なようでした。

しかし、このメソッドは空のデータフレームを返しました。 私は反復を伴わないメソッドを探しています。

def do_Corr(df_group): 
"""Apply the function to each group in the data and return one result.""" 
X = df_group.corr() 
return X 

df.groupby([df.index.year,df.index.month,df.index.day]).apply(do_Corr).dropna() 
+1

申し訳ありませんが、どのような種類の相関行列を生成したいのか分かりません。 「私は行列を日付で保存したい」とはどういう意味ですか?あなたは各日付のための1つの行列をしたいですか?はいの場合、ベクターとは何ですか? (もしあなたが日付を修正したら、あなたはただ1つの行しか持っていませんか?)もっと具体的な説明を教えてください。非常に短いバージョンのデータフレームと実行したい計算(おそらくループなどで、われわれが目標を理解できるようにする)。 –

+0

はい、日付ごとに1つのマトリックス。ベクトルは1行になります。例えば、1/4/4(18.442521,25954398,1.34444,11.528444、...)で、各値は異なる株価に対応します。 質問にはすでにデータフレームの非常に短いバージョンがあります。 –

+1

1つの行は1つのベクトルです。相関を計算するには、2つのベクトルが必要です。相関行列を計算するには、いくつかのベクトルが必要です。だから私はまだ何を計算しようとしているのか理解していない。 –

答えて

0

おそらくdf.T.corr()が必要です。 .Tはデータフレームを転置するので、rowsは列になり、.corr()メソッドを適用できます。

+0

ご協力いただきありがとうございます! –

関連する問題