반응형
컴퓨터가 읽을 수 있게 문자열 데이터를 숫자형 데이터로 바꿔주어야 한다.
여기서 우리는 각 문자열 데이터를 표현할 수 있게 범주형 데이터로 변환시킨다
1) 레이블 인코딩
from sklearn.preprocessing import LabelEncoder
for col in ['Title','AgeBin']:
encoder = LabelEncoder()
data[col] = encoder.fit_transform(data[col])
data.loc[:,['Title','AgeBin']].head()
* sklearn LabelEncoder를 불러와 LabelEncoder 객체를 만든다.
* fit_transform 함수를 사용하여 각 열의 데이터(문자열)에 적용한다.
* 각 열의 속하는 범주의 개수만큼 숫자 레이블로 변환된다.
ex) 3개의 범주가 있으면, (0,1,2)로 3개의 숫자로 바꿔준다.
(2) 원핫 인코딩
# 범주형 변수로 변환 및 원핫 인코딩
onehot_prefix = []
for col in ['Embarked','Cabin','Ticket']:
data[col] = data[col].astype('category')
data = pd.get_dummies(data, columns = [col], prefix=col[:3], drop_first=True)
onehot_prefix.append(col[:3])
data.loc[:,[col for col in data.columns if col[:3] in onehot_prefix]].head()
* 하나의 열을 범주 개수만큼 열을 분할하여 범주에 해당하는 열에는 1을 입력하고 나머지 열에는 0을 입력한다.
* 판다스의 get_dummies 함수를 사용한다. columns 속성에 원핫 인코딩할 열 이름을 입력한다.
* prefix 옵션은 분할하여 생성되는 열 이름의 앞부분을 지정한다/ [prefix + "_" + 범주 데이터]
* drop_first 옵션을 True로 지정하면 첫 번째 열을 삭제한다. (나머지 칼럼으로 유추할 수 있기에 데이터프레임을 간소화 시키는 목적으로 사용한다.) ex) 성별을 구분하는 male, female인 경우 남자이면 1이고 아니면 0이기에 한 데이터로도 유추 할 수 있다.
반응형
'Python > Pandas' 카테고리의 다른 글
[Pandas] dtype 기반 열 선택 / select_dtypes (0) | 2022.06.06 |
---|---|
[pandas] pivot_table 원하는 대로 테이블 만들기 (0) | 2022.05.18 |
[pandas] rename, reset_index (0) | 2022.05.17 |
[Pandas] 데이터 살펴보기 / head,tail,info,describe,shape,count,value_counts (0) | 2022.02.24 |
[Pandas] series / dataframe / 데이터구조 다루기 (0) | 2022.02.21 |