-
[인코딩,sklearn] One-Hot EncodingData Science/Pandas & Numpy&Scikit-learn 2021. 9. 14. 10:07반응형
인코딩 방법에는 여러가지가 존재한다.
본 포스팅에서는 가장 널리 쓰이는 One-Hot 인코딩을 사용한다.
샘플 데이터 생성
import pandas as pd df=pd.DataFrame({ 'ID':[1,2,3,4,5], 'name':['아메리카노','바닐라라떼','아메리카노','민트초코','아메리카노'], 'tumbler':['N','Y','Y','N','N'] }) print(df)
컬럼별 데이터 타입 살펴보기
print(df.dtypes)
범주형 데이터 타입만 살펴보기 (categorical, object)
categorical_list = df.dtypes[df.dtypes == "object"].index.tolist() print("Categorical features: ", categorical_list)
범주형 데이터 One-Hot 인코딩
from sklearn.preprocessing import OneHotEncoder enc = OneHotEncoder() enc.fit(df[categorical_list]) encoded_df = pd.DataFrame(enc.transform(df[categorical_list]).toarray(), columns=enc.get_feature_names(categorical_list)) print(encoded_df)
기존 데이터프레임에 합치기
encoded_df에는 범주형 컬럼에 대한 One-Hot 인코딩 결과가 들어있다.
기존 데이터프레임 df에서 범주형 컬럼을 삭제(drop)하고 수치형 컬럼만 남긴다.
그리고 두 데이터프레임을 합친다(concat).
df = df.drop(categorical_list, axis=1) df = pd.concat([df,encoded_df],axis=1) print(df)
인코더에 fit된 범주형 데이터 리스트 보기
print(enc.categories_)
반응형'Data Science > Pandas & Numpy&Scikit-learn' 카테고리의 다른 글
[Pandas] Pandas를 통한 데이터 전처리 (0) 2022.09.13 회귀모델에서 타겟(y)값의 정규화 방법 비교 실험 (0) 2022.05.27 [Python]다중 조건으로 데이터 프레임 특정 행 추출하기(데이터 프레임 필터링) (0) 2022.05.10 [정규화,sklearn] MinMaxScaler, StandardScaler, RobustScaler (0) 2021.09.14 [인코딩,sklearn] Ordinal Encoding (0) 2021.09.14