[Python pandas] ONE HOT ENCODING 수행 예제

2019.10.06 16:42데이터/머신러닝


라이브러리 및 데이터 불러오기

# 라이브러리
import pandas as pd

# 데이터
mock_data = pd.read_csv('MOCK_DATA.csv')

# 데이터 확인
mock_data.head(5)
  id ssn first_name last_name email gender ip_address city country car_make car_model
0 1 352-83-7834 Josselyn Commuzzo jcommuzzo0@shop-pro.jp Female NaN Aībak Afghanistan GMC Yukon XL 2500
1 2 129-55-2802 Aksel Cubbin acubbin1@rakuten.co.jp Male NaN Gaya Nigeria Cadillac CTS
2 3 421-78-0056 Marwin Vagg NaN Male NaN Huangjiakou China Chevrolet Tahoe
3 4 NaN Michele Freed NaN Male 95.30.236.76 Ferrol Spain Volvo NaN
4 5 821-40-7635 Skip Sallan ssallan4@nymag.com Male 200.83.222.220 Sheffield United Kingdom GMC Canyon
칼럼 확인
mock_data.columns
Index(['id', 'ssn', 'first_name', 'last_name', 'email', 'gender', 'ip_address',
       'city', 'country', 'car_make', 'car_model'],
      dtype='object')
칼럼 선택 (여러개 선택해도 가능, 다만 많아지만 데이터프레임의 칼럼 개수가 너무 많아지게 됨)
select_column = ['gender']
ONE HOT ENCODING 함수 정의
def one_hot_encoding(train_data):
    for cate in select_column: #ONE HOT ENCODING 처리
        prefix = cate #붙여둘 단어를 value 자체로함. 이건 다르게 설정 가능
        one_hot_encoding = pd.get_dummies(train_data[[cate]], prefix=prefix) #OHE 진행
        train_data  = pd.concat([pd.DataFrame(train_data), one_hot_encoding],axis=1) #기존 데이터프레임에 합쳐주기
        train_data = train_data.drop(cate,axis=1) #ONE HOT ENCODING 대상이었던 칼럼은 삭제
    return train_data.copy()
gender가 사라지고, gender_Female, gender_Male 칼럼이 생긴 것을 확인할 수 있음
return_data = one_hot_encoding(mock_data)
return_data.head(3)
  id ssn first_name last_name email ip_address city country car_make car_model gender_Female gender_Male
0 1 352-83-7834 Josselyn Commuzzo jcommuzzo0@shop-pro.jp NaN Aībak Afghanistan GMC Yukon XL 2500 1 0
1 2 129-55-2802 Aksel Cubbin acubbin1@rakuten.co.jp NaN Gaya Nigeria Cadillac CTS 0 1
2 3 421-78-0056 Marwin Vagg NaN NaN Huangjiakou China Chevrolet Tahoe 0 1