본문 바로가기
독서

범주형을 수치형으로.. 데이터 타입 변경

by _><- 2022. 5. 20.
반응형

# 범주형을 수치형으로.. 

- 원핫인코딩과 라벨인코딩 사용

 

1. 원핫인코딩

- 범주형 데이터(Object 타입)가 가진 의미를 버리지 않고 함축된 의미를 유지핸 채 숫자형 데이터로 변경, 즉 0 또는 1로 변경

 . pandas의 get_dummies() 함수

 . 그냥 사용할 경우 1개의 범주형 컬럼당 2개의 컬럼이 생성되어 가독성이 떨어짐

 . drop_first=True 옵션을 주면 1개의 컬럼에 1과 0이 모두 표현 

ex) print(pd.get_dummies(X['컬럼명'], drop_first = True))

 

2. 라벨인코딩

- 범주형 변수를 일련번호를 부여하는 방식으로 변환하는 방식

 . sklearn 라이브러리의 LabelEncoder 함수 사용

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()

print(encoder.fit_transform(X['am']))

범주의 값들이 0 ~ 9까지의 숫자로 변환된다.

 

3. 수동으로 인코딩

- replace 함수를 이용

ex) X['day_new'] = X['day'].replace('mon',0).replace('wen',1)

 

 

# 데이터타입 변경하기..

astype()함수 사용

X['gear'] = X['gear'].astype('int64')
print(X.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 32 entries, 0 to 31
Data columns (total 10 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   cyl     32 non-null     float64
 1   disp    32 non-null     float64
 2   hp      32 non-null     int64  
 3   drat    32 non-null     float64
 4   wt      32 non-null     float64
 5   qsec    32 non-null     float64
 6   vs      32 non-null     int64  
 7   am      32 non-null     object 
 8   gear    32 non-null     int64  
 9   carb    32 non-null     float64
dtypes: float64(6), int64(3), object(1)
memory usage: 2.6+ KB
None
반응형