[Python pandas] 그룹 별 변수 간 상관관계 분석 (correlation with columns by groups)
Python 분석과 프로그래밍/Python 데이터 전처리 2018. 12. 24. 16:46이번 포스팅에서는 그룹 별로 변수 간 상관관계 분석 (correlation with columns by groups) 하는 방법을 소개하겠습니다.
Python pandas는 Pearson Correlation Coefficient를 구할 수 있는 corr(), corrwith() 함수를 제공합니다. 이들 함수를 groupby() 와 apply(lambda func)를 함께 사용함으로써 그룹 별 변수 간 상관계수를 구할 수 있습니다.
[ 피어슨 상관계수 ( Pearson Correlation Coefficient) ]
먼저 예제로 사용할 'group 1'과 'group 2'의 2개의 그룹을 가진 간단한 DataFrame을 만들어보겠습니다.
import numpy as np import pandas as pd from pandas import DataFrame # making DataFrame with 4 random variables np.random.seed(123) # for reproducibility df= DataFrame(np.random.randn(10, 4), columns=['a', 'b', 'c', 'd']) # setting index with 2 group, 'grp1' and 'grp2' df['group'] = ['grp1', 'grp1', 'grp1', 'grp1', 'grp1', 'grp2', 'grp2', 'grp2', 'grp2', 'grp2'] df = df.set_index('group') df
|
(1) 'd' 변수와 나머지 모든 변수 간 그룹 별 상관계수 구하기 : x.corrwith(x['d']) |
# correlation with columns: corrwith() corr_with_d = lambda x: x.corrwith(x['d']) grouped = df.groupby('group') grouped.apply(corr_with_d)
|
(2) 'a'변수와 'd'변수 간 그룹 별 상관계수 구하기 : g['a'].corr[g['d']) |
# inter-column correlation: corr() corr_a_d = lambda g: g['a'].corr(g['d']) grouped = df.groupby('group') DataFrame(grouped.apply(corr_a_d))
|
많은 도움이 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾹 눌러주세요. ^^