2014-11-22 5 views
2

효율적으로 x1과 y의 세 열 사이에서 피어슨 r을 얻고 싶습니다.다른 열 이름을 가진 pandas 데이터 프레임에 대한 pd.corrwith

pd.corrwith()는 정확하게 동일한 열 레이블을 가진 열에 대해서만이를 계산할 수있는 것처럼 보입니다. x와 y.

다른 변수 간의 컴퓨팅 상관 관계가 공통적 인 문제라고 생각하기 때문에 이것은 약간 비현실적 인 것처럼 보입니다.

In [1]: import pandas as pd; import numpy as np 

In [2]: x = pd.DataFrame(np.random.randn(5,3),columns=['A','B','C']) 

In [3]: y = pd.DataFrame(np.random.randn(5,3),columns=['A','B','C']) 

In [4]: x1 = pd.DataFrame(x.ix[:,0]) 

In [5]: x.corrwith(y) 
Out[5]: 
A -0.752631 
B -0.525705 
C 0.516071 
dtype: float64 

In [6]: x1.corrwith(y) 
Out[6]: 
A -0.752631 
B   NaN 
C   NaN 
dtype: float64 

답변

0

당신은 (np.random.seed(0) 포함)이 작업을 수행 할 수 있습니다

x1 = pd.DataFrame(pd.Series(x.ix[:,0]).repeat(x.shape[1]).reshape(x.shape), columns=x.columns) 
x1.corrwith(y) 

이 결과를 얻으려면 :

A -0.509 
B 0.041 
C -0.732 
8

당신은 당신이 사용하여 원하는 것을 달성 할 수 DataFrame.corrwith(Series) 오히려 DataFrame.corrwith(DataFrame) 이상 :

In [203]: x1 = x['A'] 

In [204]: y.corrwith(x1) 
Out[204]: 
A 0.347629 
B -0.480474 
C -0.729303 
dtype: float64 
다음과 같이

또는, x의 각 열 및 y의 각 열 사이의 상관 관계의 매트릭스를 형성 할 수

In [214]: pd.expanding_corr(x, y, pairwise=True).iloc[-1, :, :] 
Out[214]: 
      A   B   C 
A 0.347629 -0.480474 -0.729303 
B -0.334814 0.778019 0.654583 
C -0.453273 0.212057 0.149544 

아아 DataFrame.corrwith()pairwise=True 옵션이 없습니다.

관련 문제