롤링 팬더 시리즈와 고정 시리즈에 대한 상관 관계를 얻는 방법은 무엇입니까?

Nov 19 2020

두 시리즈 사이의 corr을 계산하고 싶습니다. 나는 그들을 다음과 같이 정의했다.

s = pd.Series([1,2,3,4,5,6,7])
s2 = pd.Series([2,3,4])

내가 원하는 것은 상관 관계 시리즈이며, 값은 s.rolling (3)과 s2 사이의 corr입니다.

예 : 결과의 첫 번째 요소는 [1,2,3] .corr (s2), 두 번째 요소는 [2,3,4] .corr (s2), .....

롤링의 사용 예를 읽었지만 내부 메서드 rolling (3) .corr이 이것을 해결할 수 없다고 생각합니다.이 작업을 수행하는 좋은 방법이 있습니까?

답변

QuangHoang Nov 19 2020 at 21:59

롤링 적용을 할 수 있습니까?

from scipy.stats import pearsonr
s.rolling(3).apply(lambda x: pearsonr(x,s2)[0])

산출:

0    NaN
1    NaN
2    1.0
3    1.0
4    1.0
5    1.0
6    1.0
dtype: float64
WBM Nov 19 2020 at 21:50

for 루프를 사용하지 않는 이유는 무엇입니까?

import pandas as pd
s = pd.Series([1,2,3,4,5,6,7])
s2 = pd.Series([2,3,4])
window_size = len(s2)

output = []
for i in range(len(s)-window_size):
    output.append(s[i:window_size+i].corr(s2))