[pandas] pd.get_dummies() : 데이터전처리/가변수 만들기
[pandas] pd.get_dummies() : 가변수 만들기
머신러닝을 할 때 기계가 이해할 수 있도록 모든 데이터를 수치로 변환해주는 전처리 작업이 필수적이다.
예를들어, 숫자가 아닌 object형의 데이터들이 있다면 (요일-월, 화, 수, 목, 금과 같은)
1️⃣ 먼저 수치형 데이터로 변환을 해주고 (0,1,2,3,...)
2️⃣ 그다음 수치화된 데이터를 가변수화하여 나타내 준다면
기계학습에 적합한 데이터의 형태로 가공된다.
그렇다면, 수치형 데이터로만 바꾸면 될텐데 왜 굳이 더미로 가변수화해야하는걸까?
왜냐하면, 수치형 데이터로만 변환을 하게 되면 서로 간의 관계성이 생기게 된다.
예를 들어, 월요일을 1, 화요일을 2, 수요일을 3이라고
단순하게 수치형 데이터로 변환하게 되면 해당 데이터들 간
1+2 = 3이라는 관계성이 존재하게 된다.
그러나 실제 데이터인 월요일, 화요일, 수요일 간에는 그러한 관계성이 없다!
따라서, 사실이 아닌 관계성으로 인해 잘못된 학습이 일어날 수 있으므로
서로 무관한 수, 즉 더미로 만든 가변수로 변환함으로서 그러한 문제를 막아준다!
판다스(pandas)에서는 손쉽게 더미의 가변수를 만들 수 있도록 get_dummies함수를 제공하고 있다.
이렇게 만들어진 가변수(dummy variable)은 위의 표와 같이 0과 1로 이루어져있다.
💡pd.get_dummies() 사용법
0️⃣ 먼저, 사용할 예시 데이터 프레임을 생성 (이미 가지고 있는 데이터프레임이 있다면 이 과정은 생략)
#numpy와 pandas를 임포트해준다.
import numpy as np
import pandas as pd
season = pd.DataFrame({'season':['spring', 'summer', 'fall', 'winter', np.nan]})
#마지막 부분은 결측값 처리 예시를 위한 Nan 값을 생성해준다.
<생성된 데이터프레임>
1️⃣ pd.get_dummies 처리 : 결측값을 제외하고 0과 1로 구성된 더미값이 만들어진다.
pd.get_dummies(season['season'])
2️⃣ 결측값 처리(dummy_na = True 옵션) : Nan을 생성하여 결측값도 인코딩하여 처리해준다.
pd.get_dummies(season['season'], dummy_na=True)
참고
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html