데이터 전처리
데이터 탐색
- 데이터 확인하기
- info(): 스키마 확인 (문자열 - object, 숫자형: int64, float64)
- head(): 앞 5개 샘플 데이터 확인 (결측치 존재 여부 확인을 위해)
- tail(): 뒤 5개 샘플 데이터 확인 (결측치 존재 여부 확인을 위해)
- describe(): 통계 확인
- 타입 변경
x=x.astype({'a': int})
결측치 처리
- 결측치: 데이터 수집 과정에서 측정되지 않거나 누락된 데이터
- N/A, Null, NaN (=> missing data) + 0은 결측치가 아님
- 데이터 분석 시 반드시 처리해야 함
x=x.replace("_", np.NaN)
- 제거 (정보손실 가능성 존재)
- listwise: 결측치 존재하는 전체 행 삭제 (행에 하나라도 결측치 있으면 다 삭제)
- pariwise: 결측치로 존재하는 변수만 삭제 (한 행의 모든 변수가 결측치인 경우 삭제)
- 채우기
- 값 대체하기: 평균, 중앙값, 최빈값 등의 평균화 값으로 결측치를 대체
- 예측하기: 주변 행의 상관관계 등을 예측하여 결측치를 대체
결측치 처리 함수
- fillna(): 지정 값으로 결측치 대체 (ex backfill, ffill 등 앞/뒤 데이터로 대체)
- interpolate(): 같은 간격으로 결측치 대체 (상관관계 확인 후)
- dropan(): 결측치가 존재하는 행 제거(listwise, pariwise=> dropna(how='all'))
- replace(): 원하는 값으로 결측치 대체 가능
- thresh 파라미터: 결측치가 아닌값(정상값)이 n개 이상인 경우만 남긴다.
이상치 처리
- 이상치: 관측된 데이터의 범위에서 많이 벗어난 아주 작은 값이나 큰 값
- 데이터 시각화를 통해 확인 가능
방법
- 삭제: 이상치 가진 데이터 삭제
- 대치: 중앙값 등의 다른 값으로 변경
- 스케일링: 분포 유지하면서 값만 변경
Feature Engineering
- 도메인 지식을 이용해 원자료를 가공하여 특징을 추출하는 작업
- Feature: 각 데이터의 특징(변수, column)
- 가공(존재하는 데이터 기반으로 새 데이터 생성)이지 수정(기존 데이터 수정)하는 과정이 아님
Data Collection => Feature Engineering => Modeling
Binning
- 연속형 변수 => 범주형 변수 (연속형 변수로 그룹을 만듬)
- cut(동일 길이(구간 값)), qcut(동일 갯수(구간 갯수). q=2 => 데이터개수를 2등분)
Scaling
- 숫자 데이터의 상대적 크기 차이 제거법
- StandardScaler(): 정규분포
- RobustScaler(): 중간 값, 사분위 값 사용
- MinMaxScaler(): 특성이 0~1사이의 범위
- MaxAbsScaler(): 특성의 절대값이 0~1 범위 (전체 값은 -1~1범위)
One Hot Encoding
- 하나의 데이터를 1, 나머지를 다 0으로 만드는 방법
# get_dummies 함수 사용
x = pd.get_dummies(x['a'])