[Python] pd.get_dummies() :: One-Hot Encoding / 원핫인코딩
머신러닝에서 문자로 된 데이터는 모델링이 되지 않는 경우가 있다. 대표적으로 회귀분석은 숫자로 이루어진 데이터만 입력을 해야한다.
문자를 숫자로 바꾸어 주는 방법 중 하나로 One-Hot Encoding이 있다.
가변수(dummy variable)로 만들어주는 것인데, 이는 0과 1로만 이루어진 열을 생성하는 것이다.
이때 1은 있다, 0은 없다를 나타낸다.
0과 1로 이루어진 여러개의 열을 생성하는 One-Hot Encoding과 달리, LabelEncoding은 하나의 열에 사과 > 0, 바나나 > 1, 체리 > 2, 3,.. 식으로 숫자로 변환하는 것이다.
자세한건 여기서 볼 수 있다. https://mizykk.tistory.com/12
import numpy as np # numpy : 예시데이터의 NaN생성
import pandas as pd
# 예시데이터 생성
fruit = pd.DataFrame({'name':['apple', 'banana', 'cherry', 'durian', np.nan],
'color':['red', 'yellow', 'red', 'green', np.nan]}) #예시 데이터 생성
예시로 사용할 데이터프레임을 생성하였다.
pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)
1.
pd.get_dummies(fruit['name'])
fruit['name']열을 get_dummies해주니 결측값을 제외한 값들이 0과 1로 변환되었다.
2. 데이터프레임 전체
pd.get_dummies(fruit)
데이터프레임 전체를 get_dummies 하면 알아서 열 이름을 지정해준다.
3. dataframe에서 특정 열만 인코딩
pd.get_dummies(fruit, columns = ['name'])
지정되지 않은 열은 그대로이고, 지정된 열만 인코딩되었다.
1번 코트와 다른 점은 1번에는 'color' 열이 남아있지 않지만 이 코드에서는 데이터프레임 내에서 인코딩되었기에 'color' 열이 남아있다.
4. 열을 n-1개 생성
pd.get_dummies(fruit['name'], drop_first=True) #N-1개 생성
가변수는 기존의 속성보다 열이 하나 작게 만들어진다는 말이 있다.
옵션을 지정해주지 않으면 pandas의 get_dummies는 모든 속성을 0, 1로 바꿔준다. 만약 n-1개의 열을 만들고 싶다면 drop_first = True를 하면 된다.
5. 결측값 처리
pd.get_dummies(fruit['name'], dummy_na = True)
위 코드들에서는 결측값은 제외되었었다. 하지만 dummy_na = True로 설정해주면 결측값도 인코딩에 포함할 수 있다.
'Python > Pandas' 카테고리의 다른 글
[Pandas] pd.read_html() :: html에서 표 가져오기/데이터프레임으로 만들기 (0) | 2020.03.31 |
---|---|
[Python] 문자열 처리 :: 양 끝 공백제거/맨 앞 공백제거/맨 뒤 공백제거 (1) | 2020.02.18 |
[Python] pd.read_csv & pd.to_csv :: csv파일 불러오기 & 내보내기, 저장하기 (1) | 2019.11.26 |
[Python] 데이터프레임 만들기 :: pd.DataFrame() (0) | 2019.11.26 |
[Python] Pandas 정리 (0) | 2019.11.11 |
Comments