본문 바로가기

Computer/Pandas

Pandas - get_dummies 함수

반응형

범주형 (categorical) 데이터가 존재할 경우 이를 수치화하는 대표적인 방법은 One-hot Encoding 입니다. One-hot encoding은 범주의 개수만큼 dummy variable을 만들어 0 또는 1을 각 범주마다 할당해서 새로운 특성으로 바꾸는 방법입니다. 밑의 그림에서는 3개의 범주 (red, blue, green)에 대해 3개의 dummy variable을 할당한 뒤 red/blue/green 마다 각각 0 또는 1을 개별적으로 할당하는 것을 볼 수 있습니다.

Pandas에서는 get_dummies 라는 one-hot encoding 을 실행하는 함수를 지원합니다.

get_dummies

get_dummies 함수의 대표적인 파라미터를 알아보면,

Parameters Description
data One-hot encoding을 적용할 데이터
prefix 생성할 dummy variable의 column 이름 앞에 붙을 prefix를 지정합니다. 범주형 column에 따라 리스트나 딕셔너리를 통해 column 별 prefix를 따로 지정할 수 있음
prefix_sep prefix와 범주 사이의 separator로 '_'가 default로 지정되어 있음
dummy_na NaN도 dummy variable에 포함시킬 지 여부. default는 False
columns One-hot encoding 될 column
drop_first k개의 범주에서 k-1개로 dummy variable을 만들 때 사용. 나머지 하나는 다른 dummy로 표현됨
dtype 새로운 column의 데이터 타입. default는 np.unit8

 

Example

먼저 예시 데이터를 생성해 보겠습니다.

fruit = pd.DataFrame({'name':['apple', 'banana', 'cherry', 'durian', np.nan],
                      'color':['red', 'yellow', 'red', 'green', np.nan]})   #예시 데이터 생성

바로 get_dummies 함수를 적용해보면,

pd.get_dummies(fruit)

prefix와 prefix_sep을 지정해 보겠습니다.

pd.get_dummies(fruit, prefix=['fruit', 'clr'], prefix_sep='__')

dummy_na를 True로 하면 NaN 에도 dummy variable이 생긴 것을 알 수 있습니다.

pd.get_dummies(fruit, prefix=['fruit', 'clr'], dummy_na=True)

columns를 따로 지정하면 지정한 column에 대해서만 one-hot encoding을 수행합니다.

pd.get_dummies(fruit, columns=['name'], dummy_na=True)

drop_first를 True로 지정하면 맨 처음 범주에 대해서는 별도로 dummy variable을 할당하지 않고 나머지 범주의 여집합으로 표현합니다. k개의 범주에 대해 k-1개의 dummy variable이 생성됩니다.

pd.get_dummies(fruit, columns=['name'], drop_first=True, dummy_na=True)

마지막으로 dtype을 float으로 지정하면 정수가 아닌 실수형으로 표현됩니다.

pd.get_dummies(fruit, columns=['name'], drop_first=True, dummy_na=True, dtype=float)

 

반응형