아이공의 AI 공부 도전기

pandas.corrwith : pandas.Series의 correlation을 알고싶을 때 사용하는 함수 


우리가 seaborn 혹은 matplotlib으로 2D Structure Data의 각 column별 상관관계를 알고싶을 때 

pandas.Dataframe.corr() 

이 함수를 가장 많이 사용합니다.

마치 pandas.Dataframe.describe()와 같은 존재같죠.


그러나 막상 상관관계를 보다보면 너무 많은 feature attribute에서 Y_label과 상관관계가 가장 큰 것이 무엇이냐에 대해 찾고싶을 때가 있습니다.


물론 pandas.Series.corr(pandas.Series)이 방식으로 하나하나 찾을 수도 있지만 오늘 제가 소개해드릴 함수는 바로 corrwith()입니다.


저는 이 함수를 사용하면 바로 correlation을 series로 뽑아낼 수 있고 간단하여 선호합니다.


https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.corrwith.html#pandas.DataFrame.corrwithhttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.corrwith.html#pandas.DataFrame.corrwith



https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.corrwith.html#pandas.DataFrame.corrwith


pandas.Series.corrwith()라는 함수는 존재하지 않으니 유의하세요.

만약 series로 실행한다면 아래와 같은 에러가 뜰 것입니다.


AttributeError: 'Series' object has no attribute 'corrwith'

반드시 DataFrame.corrwith()를 사용하세요.

Parameters

1. other : DataFrame, Series


반드시 필요한 부분으로 현재 DataFrame과 어떤 것과 correlation할 것인가를 정하는 부분입니다.


우리는 Series와 DataFrame의 correlation을 구하고 싶기 때문에 이 부분에 pandas.Series를 넣습니다.


저의 경우 Y_label 값과 다른 feature들간의 상관관계를 보고싶기 때문에 Y_label series를 넣음으로써 관계 Series를 구했습니다.


2. axis : {0 or 'index', 1 or 'columns'} default=0


보통 correlation을 구할려면 어떤 축 방향으로 값을 구할 것인지 설정해야합니다. default는 0으로 되어있기 때문에 따로 설정하지 않으셔도 되지만 만약 axis=1로 설정한다면 가로 방향으로 비교를 들어간다는 사실 잊지말아주세요.


3. drop : bool, default False


결과로 뽑아낸 값들 중 missing indices들을 버릴 것인가에 대한 parameter인데 저의 경우 잘 적용되지 않네요.


4. method : {'person', 'kendall', 'spearman'} or callable


pandas.DataFrame.corr()에서도 사용되는 방식으로 어떤 방식으로 correlation을 구할 것인지 선택하는 것 입니다.

corr에서 소개하는 method를 아래 사진으로 남겨두겠습니다.

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.corr.htmlhttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.corr.html

저도 correlation을 구하는 다양한 방식이 이렇게 많은지 몰랐는데 pearson, kendall, spearman 방식들이 있구나하고 넘어가시면 될 것 같습니다.


사실 corr을 구할 때나 corrwith를 사용할 때나 모두 따로 parameter를 사용하지 않고 편리하게 사용할 수 있으니 크게 신경쓰지 않으셔도 될 것 같습니다.


Example

간단히 저의 예시를 살펴볼까요

ionosphere_data는 DataFrame이고 Y_label은 35열의 "return"입니다.

여기서 feature들이 너무 많아 한 눈에 상관관계를 보기 어려운 것이 한 눈에 보입니다. 



이 때 이렇게 사용하면 바로 우리가 원하는 Column feature과의 상관관계를 한 눈에 바라볼 수 있습니다.


정말 손쉽게 우리가 원하는 바를 얻어낼 수 있었습니다.




공유하기

facebook twitter kakaoTalk kakaostory naver band
loading