완전성

Python으로 데이터 정제하기

Adel Nehme

VP of AI Curriculum, DataCamp

누락 데이터란?

NA, nan, 0, . 등으로 표시됨

 

기술적 오류

인적 오류

Python으로 데이터 정제하기

Airquality 예시

import pandas as pd
airquality = pd.read_csv('airquality.csv')
print(airquality)
            Date  Temperature  CO2
987   20/04/2004         16.8  0.0
2119  07/06/2004         18.7  0.8
2451  20/06/2004        -40.0  NaN
1984  01/06/2004         19.6  1.8
8299  19/02/2005         11.2  1.2
...      ...             ...   ...
Python으로 데이터 정제하기

Airquality 예시

import pandas as pd
airquality = pd.read_csv('airquality.csv')
print(airquality)
            Date  Temperature  CO2
987   20/04/2004         16.8  0.0
2119  07/06/2004         18.7  0.8
2451  20/06/2004        -40.0  NaN   <--
1984  01/06/2004         19.6  1.8
8299  19/02/2005         11.2  1.2
...      ...             ...   ...
Python으로 데이터 정제하기

Airquality 예시

# 누락값 확인
airquality.isna()
       Date  Temperature    CO2
987   False        False  False
2119  False        False  False
2451  False        False   True
1984  False        False  False
8299  False        False  False
Python으로 데이터 정제하기

Airquality 예시

# 누락 현황 요약
airquality.isna().sum()
Date             0
Temperature      0
CO2            366
dtype: int64
Python으로 데이터 정제하기

Missingno

누락 데이터 시각화/이해에 유용한 패키지

import missingno as msno
import matplotlib.pyplot as plt

# 누락값 시각화 msno.matrix(airquality) plt.show()
Python으로 데이터 정제하기

Python으로 데이터 정제하기

Airquality 예시

# 누락/완전값 분리
missing = airquality[airquality['CO2'].isna()]
complete = airquality[~airquality['CO2'].isna()]
Python으로 데이터 정제하기

Airquality 예시

# 완전 데이터프레임 요약
complete.describe()
       Temperature          CO2
count  8991.000000  8991.000000
mean     18.317829     1.739584
std       8.832116     1.537580
min      -1.900000     0.000000
...      ...        ...
max      44.600000    11.900000
# 누락 데이터프레임 요약
missing.describe()
       Temperature  CO2
count   366.000000  0.0
mean    -39.655738  NaN
std       5.988716  NaN
min     -49.000000  NaN
...      ...        ...
max     -30.000000  NaN
Python으로 데이터 정제하기

Airquality 예시

# 완전 데이터프레임 요약
complete.describe()
       Temperature          CO2
count  8991.000000  8991.000000
mean     18.317829     1.739584
std       8.832116     1.537580
min      -1.900000     0.000000
...      ...        ...
max      44.600000    11.900000
# 누락 데이터프레임 요약
missing.describe()
       Temperature  CO2
count   366.000000  0.0
mean    -39.655738  NaN   <--
std       5.988716  NaN
min     -49.000000  NaN   <--
...      ...        ...
max     -30.000000  NaN   <--
Python으로 데이터 정제하기

 

sorted_airquality = airquality.sort_values(by = 'Temperature')
msno.matrix(sorted_airquality)
plt.show()

Python으로 데이터 정제하기

 

sorted_airquality = airquality.sort_values(by = 'Temperature')
msno.matrix(sorted_airquality)
plt.show()

Python으로 데이터 정제하기

누락 유형

Python으로 데이터 정제하기

누락 유형

Python으로 데이터 정제하기

누락 유형

Python으로 데이터 정제하기

누락 유형

Python으로 데이터 정제하기

누락 데이터를 다루는 방법

간단한 방법:

  1. 누락 데이터 삭제
  2. 통계값으로 대치 (평균, 중앙값, 최빈값 등)

고급 방법:

  1. 알고리즘 기반 대치
  2. 머신러닝 모델로 대치
Python으로 데이터 정제하기

누락 데이터 처리

airquality.head()
         Date  Temperature  CO2
0  05/03/2005          8.5  2.5
1  23/08/2004         21.8  0.0
2  18/02/2005          6.3  1.0
3  08/02/2005        -31.0  NaN
4  13/03/2005         19.9  0.1
Python으로 데이터 정제하기

누락값 삭제하기

# 누락값 삭제
airquality_dropped = airquality.dropna(subset = ['CO2'])
airquality_dropped.head()
         Date  Temperature  CO2
0  05/03/2005          8.5  2.5
1  23/08/2004         21.8  0.0
2  18/02/2005          6.3  1.0
4  13/03/2005         19.9  0.1
5  02/04/2005         17.0  0.8
Python으로 데이터 정제하기

통계값으로 대치하기

co2_mean = airquality['CO2'].mean()
airquality_imputed = airquality.fillna({'CO2': co2_mean})
airquality_imputed.head()
          Date  Temperature       CO2
0  05/03/2005          8.5  2.500000
1  23/08/2004         21.8  0.000000
2  18/02/2005          6.3  1.000000
3  08/02/2005        -31.0  1.739584
4  13/03/2005         19.9  0.100000
Python으로 데이터 정제하기

연습해 봅시다!

Python으로 데이터 정제하기

Preparing Video For Download...