파이썬 판다스 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
'Python > Pandas' 카테고리의 다른 글
[Pandas] 파이썬 데이터프레임 특정 값, 조건 만족 행 개수 세기 (0) | 2022.06.05 |
---|---|
[Pandas] 파이썬 IQR 기반 이상치(outlier) 탐지 및 제거 방법 (0) | 2022.05.30 |
[Pandas] 데이터프레임에서 열/행/그룹별/전체 최댓값, 최솟값 구하기(df.max(), df.min()) (0) | 2022.05.23 |