최근에 그동안 배웠던 것을 토대로 데이콘에서 데이터 예측 문제에 도전하고 있는데 그간 열심히 공부했던 것이 무색하게도 pandas의 메서드를 잘 알지도 못하고 데이터를 직접 전처리해본 일이 없었기 때문에 이 단계에서 한참을 헤멨습니다. 그래서 두 번은 헤메지 않으려 이번에 공부한 내용을 기록해 두려 합니다.
1. 데이터 불러오기
1
2
import pandas as pd
df = pd.read_csv('파일 경로')
2. 데이터 살펴보기
1
df.head()
head는 데이터프레임의 앞 5개 행을 표시합니다.
1
df.info()
데이터의 type, 특성, 개수 등을 확인합니다.
1
df.describe()
각 특성 별 4분위수, 평균, 표준편차 등 대푯값을 알려줍니다.
1
df['특성'].unique()
어떤 열에 속한 데이터의 모든 레이블을 출력합니다.
3. 결측치 파악하기
1
df.isnull().sum()
데이터의 어떤 특성에 몇 개의 null값이 있는지 표시합니다.
1
df[df.isna().sum(axis=1) > 0]
결측치가 있는 행을 모두 보여줍니다.
4. 결측치 처리하기
1
df.loc[df['특성'] != df['특성'], '특성'] = df['특성'].mean()
해당 특성의 평균으로 결측치를 채웁니다.
1
df = df.dropna()
결측치가 있는 행을 모두 삭제합니다.
5. 레이블 인코딩
1
2
3
4
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
df['특성'] = encoder.fit_transform(df['특성'].values)
정수형이 아닌 특성의 자료들을 0, 1, 2, … 의 숫자로 바꿔 줍니다.
6. one-hot 인코딩
1
oh_df = pd.get_dummies(df['특성'])
레이블 인코딩의 단점을 보완할 수 있는 형태로, [0 0 0 0 1]과 같이 값이 속한 행렬에 1을 표시해줍니다. 이렇게 할 경우 가중치를 계산하는 알고리즘에서 0인 레이블보다 5인 레이블이 중요하게 여겨지는 현상을 방지할 수 있습니다.
7. 데이터 프레임끼리 더하기
1
df = pd.concat([df, oh_df], axis=1)
df의 오른쪽 행에 oh_df를 붙입니다.
8. 열 삭제하기
df = df.drop([‘특성’], axis=1)
입력한 특성이 데이터 프레임에서 삭제됩니다.