Pandas에서는 .corr() 메서드를 활용하면 두 열(column) 간의 상관 관계를 아주 간단하게 계산할 수 있습니다. 이 메서드는 기본적으로 피어슨(Pearson) 상관 계수를 반환하며, 그 값은 -1부터 1 사이입니다. 아래에서 예제를 통해 실제 적용 방법을 단계별로 살펴보겠습니다.
상관 관계 값의 의미
- +1에 가까울수록: 두 변수 사이에 강한 양(+)의 선형 관계가 있습니다.
- -1에 가까울수록: 두 변수 사이에 강한 음(-)의 선형 관계가 있습니다.
- 0에 가까울수록: 선형적인 관계가 거의 없습니다.
구현 단계
- 2차원이면서 크기를 유연하게 조정할 수 있고, 서로 다른 자료형을 담을 수 있는 표 형태의 데이터프레임 df를 생성합니다.
- 입력 데이터프레임 df를 화면에 출력합니다.
- 상관 관계를 확인하고 싶은 두 열의 이름을 col1, col2 변수에 각각 할당합니다.
df[col1].corr(df[col2])를 호출하여 두 열의 상관 계수를 계산하고, 그 결과를 corr 변수에 저장합니다.- 계산된 상관 계수 corr를 출력합니다.
예제 코드
import pandas as pd
df = pd.DataFrame(
{
"x": [5, 2, 7, 0],
"y": [4, 7, 5, 1],
"z": [9, 3, 5, 1]
}
)
print("Input DataFrame is:\n", df)
col1, col2 = "x", "y"
corr = df[col1].corr(df[col2])
print("Correlation between", col1, "and", col2, "is:", round(corr, 2))
col1, col2 = "x", "x"
corr = df[col1].corr(df[col2])
print("Correlation between", col1, "and", col2, "is:", round(corr, 2))
col1, col2 = "x", "z"
corr = df[col1].corr(df[col2])
print("Correlation between", col1, "and", col2, "is:", round(corr, 2))
col1, col2 = "y", "x"
corr = df[col1].corr(df[col2])
print("Correlation between", col1, "and", col2, "is:", round(corr, 2))
실행 결과
Input DataFrame is: x y z 0 5 4 9 1 2 7 3 2 7 5 5 3 0 1 1 Correlation between x and y is: 0.41 Correlation between x and x is: 1.0 Correlation between x and z is: 0.72 Correlation between y and x is: 0.41
결과 해석 및 추가 팁
x와 y의 상관 계수는 약 0.41로, 두 열 사이에 중간 정도의 양(+)의 상관 관계가 있음을 보여줍니다. 자기 자신과의 상관 계수(x와 x)는 정의상 항상 1.0이며, 상관 계수는 대칭적이므로 corr(x, y)와 corr(y, x)의 값은 동일합니다.
또한 몇 가지 유용한 확장 방법도 알아두면 좋습니다.
- 데이터프레임의 모든 열 쌍에 대한 상관 계수를 한 번에 확인하려면 df.corr()을 호출하여 상관 행렬을 얻을 수 있습니다.
- 기본값인 피어슨 방식 대신 순위 기반의 상관 분석이 필요하다면 df[col1].corr(df[col2], method='spearman') 또는 method='kendall'처럼 옵션을 지정하면 됩니다.