[파이썬] pandas 데이터 프레임의 원핫인코딩 (get_dummies)

원핫인코딩은 범주형 데이터를 수치형 데이터로 변환하는 방법 중 하나입니다. 이를 통해 머신러닝 모델에 범주형 데이터를 적용할 수 있습니다. pandas 라이브러리의 get_dummies 함수를 사용하여 간편하게 원핫인코딩을 수행할 수 있습니다.

원핫인코딩이란?

원핫인코딩은 범주형 데이터의 각 카테고리를 이진 벡터로 표현하는 과정입니다. 예를 들어, “사과”, “바나나”, “오렌지”와 같은 과일에 대한 범주형 데이터를 원핫인코딩하면 [“사과”, “바나나”, “오렌지”]가 아래처럼 변환됩니다.

과일 사과 바나나 오렌지
사과 1 0 0
바나나 0 1 0
오렌지 0 0 1

이론적 배경과 원핫인코딩의 필요성을 알게 되었으니, 이제 pandas의 get_dummies 함수를 사용해 실제 데이터를 변환하는 방법을 살펴보겠습니다.

pandas의 get_dummies 함수 사용하기

get_dummies 함수는 pandas 데이터프레임의 열을 인코딩하기 위해 사용됩니다. 다음은 get_dummies의 가장 기본적인 사용 방법입니다.

import pandas as pd

# 데이터프레임 생성
df = pd.DataFrame({'과일': ['사과', '바나나', '오렌지']})

# 원핫인코딩 적용
encoded_df = pd.get_dummies(df['과일'])

# 결과 출력
print(encoded_df)

실행 결과:

   과일_바나나  과일_사과  과일_오렌지
0        0       1        0
1        1       0        0
2        0       0        1

위의 예제에서는 “과일” 열의 범주형 데이터를 원핫인코딩하여 새로운 데이터프레임을 생성했습니다. get_dummies 함수는 기본적으로 각 카테고리를 열 이름에 추가하여 이진 벡터로 변환합니다. 변환된 결과를 encoded_df라는 새로운 데이터프레임으로 저장하고 출력하였습니다.

추가적으로, get_dummies 함수는 다양한 매개변수를 제공하여 원핫인코딩의 세부사항을 조정할 수 있습니다. 예를 들어, prefix 매개변수를 사용하여 열 이름에 접두사를 추가할 수 있습니다.

encoded_df = pd.get_dummies(df['과일'], prefix='Fruit')

결과:

   Fruit_바나나  Fruit_사과  Fruit_오렌지
0          0         1          0
1          1         0          0
2          0         0          1

만약 원핫인코딩을 수행하고 나서 원래 데이터프레임에 인코딩된 열을 추가하려면 pd.concat 함수를 사용하여 원래 데이터프레임과 인코딩된 데이터프레임을 병합할 수 있습니다.

# 원핫인코딩 적용 및 병합
merged_df = pd.concat([df, encoded_df], axis=1)

결과:

    과일  Fruit_바나나  Fruit_사과  Fruit_오렌지
0   사과          0         1          0
1  바나나          1         0          0
2  오렌지          0         0          1

이제 merged_df 데이터프레임에는 원래 데이터프레임과 인코딩된 열이 함께 표시됩니다.

결론

pandas의 get_dummies 함수를 사용하면 손쉽게 범주형 데이터의 원핫인코딩을 수행할 수 있습니다. 이를 통해 머신러닝 모델에 범주형 데이터를 적용할 수 있으며, 데이터프레임에 원핫인코딩된 열을 추가하는 방법도 알아보았습니다. 이제 여러분은 pandas의 get_dummies 함수를 사용하여 데이터를 변환할 수 있습니다.

참고 문서: