Python/Pandas

[Pandas] 파이썬 데이터프레임 원핫인코딩 함수 : get_dummies() 사용법

jimmy_AI 2022. 6. 2. 18:44
반응형

파이썬 판다스 one-hot encoding 함수 예제

파이썬 데이터프레임에서 범주형 column에 대하여 원핫인코딩을 손쉽게 진행하는 방법을

pandas의 get_dummies() 함수의 사용 예시를 통해서 다루어보도록 하겠습니다.

 

아래와 같이 숫자형 컬럼 2개와 범주형 컬럼 2개로 구성된 데이터프레임을 가정하겠습니다.

import pandas as pd
import numpy as np

a = {'A' : [1, 2, 3, 4, 5, 6], 'B' : [10, 20, 30, 40, 50, 60], 'class' : ['가', '가', '나', '나', '다', '다'],  'level' : ['A', 'A', 'A', 'B', 'B', np.nan]}
df = pd.DataFrame(a)

df

 

 

기본 사용법 : 모든 범주형 column에 대해서 원핫인코딩 적용

pd.get_dummies(데이터프레임 or 시리즈) 형태로 사용하게 되며, 기본 설정으로 사용하면

범주형 자료(문자열 등을 의미합니다.)로 구성된 열들에 대하여 전부 원핫인코딩을 적용하여

새로운 column이 생긴 형태로 반환하게 됩니다.

df_dum = pd.get_dummies(df)

df_dum

범주형 컬럼인 class, level 모두에 대하여 one-hot encoding이 적용된 결과를 볼 수 있습니다.

 

 

columns 인자 : 특정 column에 대해서만 원핫인코딩 적용

만일, 특정 열에 대해서만 원핫인코딩을 적용하고 싶다면

columns 인자에 적용을 원하는 열들의 리스트를 input으로 지정해주시면 됩니다.

df_dum_class = pd.get_dummies(df, columns = ['class'])

df_dum_class

level 열은 그대로 있고 class 컬럼에만 원핫인코딩이 적용되었습니다.

참고로, 숫자형 column 등도 강제로 원핫인코딩 진행이 가능하긴 합니다.

반응형

prefix 인자 : 원핫인코딩 컬럼 이름 prefix 지정

기본적으로는 원핫인코딩이 진행되는 column의 이름을 prefix로 사용합니다.

다만, prefix 인자를 설정하면 변경이 가능합니다.

df_dum_class2 = pd.get_dummies(df, columns = ['class'], prefix = '클래스')

df_dum_class2

열 이름이었던 영어 'class' 대신 한글 '클래스'로 prefix가 지정된 것을 볼 수 있습니다.

 

 

dummy_na 인자 : 결측값 포함 원핫인코딩 여부 지정

결측값은 기본적으로 one-hot encoding 시에 대상에서 제외가 됩니다.

그러나 만일, NaN 값에 대해서도 하나의 원핫인코딩 형태로 취급하고 싶다면

dummy_na 인자를 True로 지정해주시면 됩니다.

df_dum_level = pd.get_dummies(df, columns = ['level'], dummy_na = True)

df_dum_level