본문 바로가기
PYTHON/python 예제

[python] 파이썬 결측치 처리

by 자유데이터 2020. 3. 20.
반응형

데이터 분석가의 길, 자유데이터입니다.

 

 

  • 데이터프레임 결측치 확인 및 처리

데이터 분석할 때, 결측치를 무조건 제거하는 방법은 옮지 않다.
상황에 따라 새로운 값으로 채우거나 제거하는 등 다양한 방법을 사용한다.

  1. python 결측치 확인
  2. python 결측치 제거
  3. python 결측치 대체
  4. python 결측치 연산

 

1. python 결측치 확인

예제 데이터를 살펴보자.

import pandas as pd
import numpy as np

a = ['2/18', '2/18', '2/18', '2/18', '2/20', '2/20', '2/20', '2/20', '2/25', '2/25', '2/25']
b = ['철수', '철수', '철수', '영희', '영희', '영희', '영희', '철수', '영희', '영희', '철수']
c = ['치킨', None, '닭발', '치킨', '닭발', '짜장면', np.nan, '치킨', '피자', '치킨', '피자']
d = [1,2,1,3,None,4,2,5,3,np.nan,3]

data = pd.DataFrame({'날짜':a,'사람':b,'음식':c,'개수':d})
data

결측치 확인은 두 가지만 알면 된다.
isnull()notnull()

data.isnull()

isnull은 결측치 부분만 True로 나오고 나머지는 False로 나온다.
notnull은 반대이다.

결측치가 있는 행을 보고 싶다면 색인을 활용한다.

data[data['음식'].isnull()]

 

2. python 결측치 제거

결측치가 있는 행을 제외하는 방법은 두 가지가 있다.

data[data['음식'].notnull()]

색인을 활용하거나

data.dropna()

dropna()를 사용한다.

data.dropna(inplace = True)
data

inplace 인자를 사용하면 변수에 담지 않고 바로 적용이 된다.

 

3. python 결측치 대체

fillna()를 이용하면 결측치에 채워준다.

data['음식'].fillna('스파게티')

0 치킨
1 스파게티
2 닭발
3 치킨
4 닭발
5 짜장면
6 스파게티
7 치킨
8 피자
9 치킨
10 피자
Name: 음식, dtype: object

 

4. python 결측치 연산

data['개수'][4] +1

nan

사칙연산을 하면 nan값이 나오지만
sum(), mean() 등의 함수를 사용하면 값이 제대로 나온다.

결측치가 표기 되고 싶게 하려면

data['개수'].mean(skipna = False)

nan

skipna 인자를 사용한다.

 

5. python 결측치 연산 주의

다시 예제 데이터를 살펴보자.

import pandas as pd
import numpy as np

a = ['2/18', '2/18', '2/18', '2/18', '2/20', '2/20', '2/20', '2/20', '2/25', '2/25', '2/25']
b = ['철수', '철수', '철수', '영희', '영희', '영희', '영희', '철수', '영희', '영희', '철수']
c = ['치킨', None, '닭발', '치킨', '닭발', '짜장면', np.nan, '치킨', '피자', '치킨', '피자']
d = [1,2,1,3,None,4,2,5,3,np.nan,3]

data = pd.DataFrame({'날짜':a,'사람':b,'음식':c,'개수':d})
data

python에서 None과 NaN은 차이가 있다.
문자에서는 그대로 나오지만, 숫자에서는 모두 NaN으로 표기된다.
여기서 연산할 때, 조심해야 할 부분이 있다.

data['개수'].sum()

24.0

'결측치가 있어도 연산이 되는구나'하고 넘어가면 안된다.
NaN을 제외하고 합산하면 20이 나와야 한다.

즉, None으로 들어갔던 수치는 뒤에있는 데이터로 바뀌어 들어간다는 것이다.

반응형

'PYTHON > python 예제' 카테고리의 다른 글

[python] 파이썬 날짜 변환  (0) 2020.03.17

댓글