<13-1주차 수강 클립>
04. 데이터 분석을 위한 Python (Pandas)
17. DataFrame 타입이해 - 11. 숫자 데이터와 범주형 데이터의 이해
18. DataFrame 타입이해 - 12. 숫자 데이터의 범주형 데이터화
19. DataFrame 타입이해 - 13. 범주형 데이터 전처리 하기(one-hot encoding)
이번 주차는 DataFrame 타입의 이해 그 마지막 시간이었습니다.
존재하는 데이터는 크게 숫자형 / 범주형(category) 두 가지로 나눌 수 있는데,
숫자형 데이터를 범주형 데이터화, 범주형 데이터를 숫자형으로 전처리하는 법을
배워봤답니다.
>>수강 인증샷<<
17. DataFrame 타입이해 - 11. 숫자 데이터와 범주형 데이터의 이해
- info 함수로 각 변수의 데이터 타입 확인
타입 변경: astype함수
train_data.info()
: float64 = 64비트 복소수형
: int64 = 64비트 실수형
: object = 객체 (string 문자열)
- 숫자형(Numerical Type) 데이터
연속성을 띄는 숫자로 이루어진 데이터 ex) Age, Fare etc...
- 범주형(Categorical Type) 데이터
연속적이지 않은 값(대부분의 경우 숫자를 제외한 나머지 값)을 갖는 데이터를 의미 ex) Name, Sex, Ticket, Cabin, Embarked etc;;
어떤 경우, 숫자형 타입이라 할지라도 개념적으로 범주형으로 처리해야 할 경우가 있음 (숫자가 의미하는게 어떠한 '카테고리'를 의미하는 경우!) ex) Pclass (1등석 2등석 3등석)
데이터 연산에 바로 적용할 수 없기 때문에 1. 버리거나 2. 숫자형 데이터로 변환을 시켜야 함
18. DataFrame 타입이해 - 12. 숫자 데이터의 범주형 데이터화
- Pclass 변수 변환하기 (범주형 → 숫자형)
astype 함수 사용하여 간단히 타입만 변환하기
train_data['Pclass'] = train_data['Pclass'].astype(str)
: Pclass의 int64를 string으로 변환 후 다시 'Pclass' column에 넣기
- Age 변수 변환하기 (숫자형 → 범주형)
변환 로직(숫자형을 범주형으로 변환할)을 함수로 만든 후, apply 함수로 적용하기
import math
# 변환 로직 만들기
def age_categorize(age):
if math.isnan(age): #NaN값 처리
return -1
return math.floor(age / 10) * 10 #소수점 떼기
: 기존 나이(소수점 붙은 float형) → 소수점 제외, 10대/20대/30대...의 int형으로 구분
train_data['Age'].apply(age_categorize)
: 복사본의 Series를 반환 (원본 데이터는 변경 x)
19. DataFrame 타입이해 - 13. 범주형 데이터 전처리 하기(one-hot encoding)
- One-hot encoding
범주형 데이터는 분석단계에서 계산이 어렵기 때문에 숫자형으로의 변경이 필요함
범주형 데이터의 각 범주(category)를 column 레벨로 변경 (하나하나의 column으로 뜯음)
해당 범주에 해당하면 1, 아니면 0으로 채우는 인코딩 기법
*) pandas.get_dummies 함수 사용
*) drop_first: 첫 번째 카테고리 값은 사용하지 않음 (모든 범주 column의 값이 0일 경우 생략된 범주라는 의미!)
pd.get_dummies(train_data)
: 각각의 모든 범주형 데이터인 Name, Sex, Ticket, Fare, Cabin, Embarked를 column level로 올린 것 (object type이기 때문)
: 전체 범주가 모두 column으로 올라감
: 해당하면 1, 해당하지 않으면 0으로 값을 채움
pd.get_dummies(train_data, columns=['Pclass', 'Sex', 'Embarked'])
: columns 파라미터에 리스트로 전달
: 명시한 변수들만 전체 범주를 column level로 올림
pd.get_dummies(train_data, columns=['Pclass', 'Sex', 'Embarked'], drop_first=True)
: column 내의 모든 값을 새로운 column으로 옮겼을 때 첫 번째 한 범주는 버림 (=one-hot encoding의 의미)
: 해당하면 1, 아니면 0 구분을 바탕으로 나머지 범주의 값이 모두 0이면 dropped first 범주에 해당한다고 해석!
강의 링크: https://bit.ly/3cB3C8y
'코딩 > 머신러닝&데이터 분석 강의' 카테고리의 다른 글
[머신러닝 인강] 패스트캠퍼스 머신러닝과 데이터 분석 A-Z올인원 패키지 Online 머신러닝 인강 챌린지 참여 후기 (0) | 2021.05.24 |
---|---|
[머신러닝 인강] 13-2주차: Pandas DataFrame의 그룹핑 (group by, transform, pivot, pivot_table) (0) | 2021.05.14 |
[머신러닝 인강] 12-2주차: Pandas DataFrame 새 컬럼 추가/삭제, 상관관계 계산, NaN 데이터 처리 (0) | 2021.05.09 |
[머신러닝 인강] 12-1주차: Pandas DataFrame 의 컬럼,데이터 선택하기 (0) | 2021.05.08 |
[머신러닝 인강] 11-2주차: Pandas DataFrame 의 이해 (0) | 2021.05.01 |