Search

corr() / corrwith()

corr() / corrwith()

1.
df.corr(method=’pearson’, min_periods=1)
각 열 간의 상관 계수를 반환하는 메서드다.
method : {pearson / kendall / spearman}
min_periods : 유효한 결과를 얻기 위한 최소 값의 수(피어슨, 스피어만만 사용가능)
2.
df.corrwith(other, axis=0, drop=False, method=’pearson’)
두 데이터프레임의 동일한(이름이) 행/열 간의 상관 계수를 반환하는 메서드다.
other : 동일한 이름의 행/열을 비교할 다른 객체
axis : {0: 행 / 1 : 열} 기본적으로 0으로 행끼리 비교한다.
drop : 동일한 이름의 행/열이 없을 경우 NaN을 출력하는데, 출력하지 않을지 여부다.
method : {pearson / kendall / spearman}
→ 상관계수 산정 방식에는 피어슨 상관계수, 켄달-타우 상관계수, 스피어만 상관계수 가 있다.
[피어슨 상관계수]
피어슨 상관계수 는 두 변수 간의 선형 상관관계를 계량화 한 수치다. 값은 -1과 1사이에 존재하고, 0일 경우 ‘선형 상관 관계를 갖지 않는다’ 라고 해석하면 된다.
[켄달-타우 상관계수]
켄달-타우 상관계수 는 두 변수 간의 순위를 비교해서 연관성을 계산하는 방식이다. 순위가 동일하면 +1, 완전히 다르면 -1이 된다고 생각하면 된다.
[스피어만 상관계수]
스피어만 상관계수 는 두 변수의 순위 값 사이의 피어슨 상관 계수와 같다. 즉, 순서척도가 적용되는 경우에는 스피어만 상관계수가, 간격척도가 적용되는 경우에는 피어슨 상관계수가 적용된다.
#### corr() #### col1 = [1,2,3,4,5,6] col2 = [1,4,2,8,16,32] col3 = [6,5,4,3,2,1] data = {"col1":col1,"col2":col2,"col3":col3} df = pd.DataFrame(data) print(df) >> col1 col2 col3 0 1 1 6 1 2 4 5 2 3 2 4 3 4 8 3 4 5 16 2 5 6 32 1 print(df.corr(method='pearson')) >> col1 col2 col3 col1 1.000000 0.887739 -1.000000 col2 0.887739 1.000000 -0.887739 col3 -1.000000 -0.887739 1.000000 print(df.corr(method='kendall')) >> col1 col2 col3 col1 1.000000 0.866667 -1.000000 col2 0.866667 1.000000 -0.866667 col3 -1.000000 -0.866667 1.000000 print(df.corr(method='spearman')) >> col1 col2 col3 col1 1.000000 0.942857 -1.000000 col2 0.942857 1.000000 -0.942857 col3 -1.000000 -0.942857 1.000000 #### corrwith() #### data1 = {"col1":[1,2,3,4,5,6],"col2":[1,4,2,8,16,32]} data2 = {"col1":[6,5,4,3,2,1],"col3":[3,6,1,2,5,9]} df1 = pd.DataFrame(data1) df2 = pd.DataFrame(data2) print(df1.corrwith(other = df2, method = `pearson`)) >> col1 -1.0 col2 NaN col3 NaN dtype: float64 print(df1.corrwith(other = df2, method = `pearson`, drop = True)) >> col1 -1.0 dtype: float64
Python
복사

tip for 데이터 분석

피처들과 타겟값과의 상관계수를 확인하고자 할 때 corrwith() 를 사용하면 간단하게 볼 수 있다.
df[features_list].corrwith(df['target'])
Python
복사