2017-04-21 8 views
0

지난 주 입력의 상관 값을 다음 주 출력으로 가져 오려고합니다.날짜/시간차 인덱스를 사용하여 팬더 피어슨 상관 관계를 오프셋하는 방법

이 예제에서는 매주 입력이 다음 주 출력으로 설정되고 df.corr()1.000000 결과를 제공하도록 설정했습니다.

내 원래 데이터는 다음과 같습니다 https://drive.google.com/open?id=0B4xdnV0LFZI1MzRUOUJkcUY4ajQ

가 여기에 지금까지 내 코드입니다 :

Date  Input  Output 
1/1/2010 73   73 
1/7/2010  2   73 
1/13/2010 3   2 
1/19/2010 4   3 

전체 샘플 데이터는 여기에 업로드

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) 

그리고 초보자 여기 어디 I 붙어있어. 기능에 내장 된 shift 옵션이 표시되지 않으며이를 수행하는 방법이 확실하지 않습니다.

모든 도움을 주시면 감사하겠습니다.

당신이 dataframe에 .corr을 할 경우, 그것은 상관 행렬을 생성합니다 나

+0

가 BTW 그 모든 육일입니다를. – piRSquared

답변

3

, 감사합니다.

두 가지 시계열 간의 상관 관계를 원할 경우 아래 코드를 사용하면됩니다. 시계열에 대한 .corr 메소드에는 매개 변수 other이 필요합니다.이 매개 변수는 상관 관계를 계산하는 시리즈입니다. 대신 당신이 상관 행렬을 원하는 경우

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

는 먼저 이동 출력과 dataframe을 만든 다음 상관 관계를 계산해야합니다

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