본문 바로가기
👩‍💻TIL/Python

[pandas] pd.get_dummies() : 데이터전처리/가변수 만들기

by devuna 2020. 6. 25.
728x90

[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

 

pandas.get_dummies — pandas 1.0.5 documentation

String to append DataFrame column names. Pass a list with length equal to the number of columns when calling get_dummies on a DataFrame. Alternatively, prefix can be a dictionary mapping column names to prefixes.

pandas.pydata.org

 

728x90

댓글