○ get_dummies 함수란?
pandas.get_dummies()는 범주형(categorical) 데이터를 원-핫 인코딩(one-hot encoding) 방식으로 변환해주는 함수입니다. 즉, 문자열이나 범주형 열을 0과 1로 구성된 이진 변수들로 나누는 작업을 자동으로 처리해 줍니다.
○ 왜 사용하는가?
머신러닝 모델은 대부분 숫자 데이터만 이해합니다. 문자형 데이터를 그대로 모델에 넣을 경우, 모델은 해당 데이터가 크고 작다는 의미를 가진다고 오해할 수 있습니다. 이를 방지하기 위해 get_dummies()를 사용해 의미 있는 숫자 표현으로 변환해주는 것이죠.
예를 들어 다음과 같은 데이터가 있을 때:
import pandas as pd
df = pd.DataFrame({'색상': ['빨강', '파랑', '초록']})
pd.get_dummies(df)
색상_빨강 색상_파랑 색상_초록
0 1 0 0
1 0 1 0
2 0 0 1
○ 주요 파라미터 설명
- data: 인코딩할 데이터프레임 혹은 시리즈
- columns: 원-핫 인코딩할 열 지정 (기본값은 모든 범주형 열)
- prefix / prefix_sep: 생성된 열 이름에 붙을 접두사와 구분자
- drop_first: True로 설정하면 첫 번째 범주는 제거 (더미 변수의 다중공선성 방지)
- dtype: 반환되는 열의 데이터 타입 지정 (기본값: np.uint8)
pd.get_dummies(df, drop_first=True)
색상_파랑 색상_초록
0 0 0
1 1 0
2 0 1
○ get_dummies vs OneHotEncoder
| 구분 | get_dummies | OneHotEncoder (from sklearn) |
| 사용 목적 | 빠르게 인코딩 | 모델 파이프라인에 통합 |
| 반환형 | pandas.DataFrame | numpy.ndarray or sparse matrix |
| 파라미터 제어 | 간단함 | 정밀 제어 가능 |
| 결측치 처리 | 자동 처리 안 됨 | 처리 옵션 제공 |
○ 주의할 점
- 범주 수가 많을 경우 차원이 급격히 증가할 수 있습니다 (고차원 문제)
- 데이터 분할 전에 get_dummies를 적용하면 train/test 간 차원이 달라질 수 있으므로 주의가 필요합니다
- drop_first 사용 시 모델 해석이 쉬워지지만, 정보 손실이 발생할 수 있습니다
○ 마무리
pandas.get_dummies()는 매우 유용하면서도 간단한 인코딩 도구입니다. 데이터 전처리에서 자주 쓰이므로, 그 동작 원리와 특징을 잘 이해해두면 실전에서 큰 도움이 됩니다.
'Python 코드' 카테고리의 다른 글
| [Python] Keras(TensorFlow) (3) | 2025.07.17 |
|---|---|
| [Python] DataFrame.astype() (1) | 2025.07.14 |
| [Python] DataFrame.replace() (1) | 2025.07.13 |
| [Python] DataFrame.drop() (1) | 2025.07.12 |
| [Python] Counter 함수 (from collections import Counter) (0) | 2025.07.03 |