STUDY_SEONMIN

DAY39 - 데이터 전처리 기초(결측데이터 처리) 본문

EDUCATION/DSS Online 6기

DAY39 - 데이터 전처리 기초(결측데이터 처리)

Kululu_ 2021. 3. 9. 11:20

데이터분석을 하는 과정은 크게 4단계로 나눌 수 있습니다.

 

1. 데이터 수집

2. 데이터 전처리

3. 데이터분석

4. 분석 결과 활용

 

이 글에서는 2단계에 해당하는 데이터 전처리에 대해서 다루도록 하겠습니다.

 

흔히들 데이터분석을 하는 사람들이 말하는 것이 데이터분석의 80%는 데이터 전처리라고 합니다.

그만큼 데이터 전처리는 중요한 것으로 꼭 알아두어야 합니다.

 

물론 데이터의 특성에 따라, 분석 시 사용하고자 하는 모델에 따라 전처리 방법들을 달라질 수 있으므로 여기서는 기초적인 전처리에 대해서 다루도록 하겠습니다.

 

결측값에 대한 전처리

- 수집한 데이터에 결측값이 있을 경우 그대로 분석에 사용할 수 없기에 전처리 작업을 해주어야 합니다.

- 결측값에 대한 전처리를 할 때는

    1) 결측값을 포함한 데이터를 버림

    2) 결측값을 다른 값으로 대체

  이렇게 두 가지 방식을 많이 사용합니다.

- 결측값 데이터 처리할 때는 missingno 패키지와 sklearn.impute 패키지를 주로 사용합니다.

 

missingno패키지

- 결측 데이터를 검색하고 시각화하는 데에 유용한 패키지입니다.

missingno 패키지의 matrix함수에 데이터프레임을 넣으면 결측 데이터를 시각화 할 수 있습니다.

하얀색으로 비어있는 부분들이 결측값이 있다는 의미입니다.

 

왼쪽 하단의 891은 총 데이터(로우)의 수이고 가장 오른쪽에 있는 선들은 스파크라인이라고 하는데 각 로우의 완성도를 의미합니다. 검은색 선으로 가득 채워진 줄은 해당 로우의 모든 값들이 잘 채워져 있다는 의미입니다.

 

각 컬럼별로 결측값이 얼마나 있는지는 missigno패키지의 bar함수로 더 쉽게 확인 가능합니다.

 

앞서 결측 데이터는 버리거나 대체할 수 있다고 하였는데 버릴 때는 데이터프레임 객체에 내장된 dropna 메소드를 사용할 수 있습니다.

 

 

만약 deck 열은 너무 결측값이 많아 버려야겠다고 판단한다면 다음과 같이 할 수 있습니다.

절반 이상 결측값이 포함된 열이 deck 밖에 없기에 axis=1, thresh=데이터의 절반 으로 설정하여 버릴 수 있습니다.

 

sklearn.impute 패키지

다음으로 결측 데이터를 버리지 않고 다른 값으로 대체하고 싶을 때는 sklearn.impute 패키지의 SimpleImputer 클래스를 사용할 수 있습니다.

어떤 startegy를 사용할지는 보통 다음과 같은 기준에 의해 결정합니다.

1) 데이터가 실수인 경우 평균 or 중앙값 사용. 데이터의 분포를 보고 대칭이면 평균, 심하게 비대칭이면 중앙값 사용

2) 데이터가 범주값이거나 정수값인 경우 최빈값 사용

 

 

현재 embarked 컬럼과 embark_town 컬럼은 범주형 데이터이므로 최빈값으로 결측 데이터를 채워보겠습니다.

 

imputer에 데이터를 넣을 때는 반드시 2차원 형태로 들어가야 하므로 컬럼을 하나만 넣을 때도 2차원 형태로 넣어야 하는 것을 주의해주세요.

 

age컬럼의 경우 실수형데이터이므로 평균 또는 중앙값으로 결측 데이터를 채울 수 있는데 둘 중 어떤 값으로 채울지를 결정하기 위해 age 데이터의 분포를 살펴보겠습니다.

데이터를 살펴볼 때 비대칭인 것을 알 수 있습니다. 이럴 경우 중앙값으로 결측 데이터를 대체하면 좋습니다.

Comments