2017-04-21 9 views
0

次の週の出力に前週の入力の相関値を取得しようとしています。日時インデックスを使用してPandas Pearson相関をオフセットする方法

この例では、毎週の入力が次の週の出力になるように設定しました。df.corr()1.000000となります。

私の元のデータは次のようになります。

Date  Input  Output 
1/1/2010 73   73 
1/7/2010  2   73 
1/13/2010 3   2 
1/19/2010 4   3 
ここにアップロードさ

全サンプルデータ: https://drive.google.com/open?id=0B4xdnV0LFZI1MzRUOUJkcUY4ajQ

ここでは、これまでに私のコードです:

import pandas as pd 
df = pd.read_csv('pearson.csv') 
df['Date'] = pd.to_datetime(df['Date'], errors = 'coerce') 
df = df.set_index(pd.DatetimeIndex(df['Date'])) 
df = df[['Input', 'Output']] 
x = df.corr(method = 'pearson', min_periods=1) 
print(x) 

、どこで、ここで初心者だとして私は立ち往生した。関数に組み込まれたshiftオプションが表示されず、これを行う方法がわかりません。

何かすべての助けがありがとうございます。

は、あなたがデータフレームに .corrを行う場合は、相関行列を生成します ミー

+0

ところでそれは、すべての6日です。 – piRSquared

答えて

3

、ありがとうございます。

あなたの場合、2つの時系列の間の相関関係が必要なだけで、以下のコードでこれを達成できます。時系列の.corrメソッドには、相関を計算する系列であるパラメータotherが必要であることに注意してください。

df["Input"].corr(df["Output"].shift(-1), method = 'pearson', min_periods = 1) #1 

あなたは相関行列をしたい代わり場合は、最初にシフトされた出力でデータフレームを作成し、相関を計算する必要があります。

temp_df = pd.concat([df['Input'], df['Output'].shift(-1)], axis = 1).dropna() 
temp_df.corr(method = 'pearson', min_periods = 1) 

#  Input Output 
#Input  1.0  1.0 
#Output 1.0  1.0 
+1

おめでとう1k;) – jezrael

+0

これは良い答えです。 – piRSquared

関連する問題