본문 바로가기

BLOG/데이터분석

[데이터분석] 데이터프레임 : 결측치 있는지 확인하기 & 칼럼별 개수 세기 - isnull(), isnull().sum()

 

데이터 분석을 하기 전 데이터 전처리를 할 때, 결측치(결측값, NaN)가 있으면 데이터 분석을 할 때 문제가 될 수 있는데요, 사전에 결측치가 있는지 알아보는 것이 중요합니다.

 

하지만 데이터가 많지 않을 때 결측치가 있는지 한 눈에 알 수 있지만 데이터가 매우 많다면 결측치가 어디에 있는지, 칼럼마다 몇 개가 있는지 확인하기 어려울 수 있습니다. 따라서 pandas 에서는 결측치가 얼마큼 있는지 알려주는 함수를 제공하는데요, 아래 예시와 코드를 보면서 설명하도록 하겠습니다.

 

 

1. isnull() : 결측치 확인하기

먼저, 결측치가 있는지 확인하는 함수는 isnull() 함수로, 각 행, 열마다 결측치가 있는 데이터가는 True, 결측치가 아닌 데이터는 False를 반환합니다. 

예를 들어, 아래와 같은 데이터 프레임이 있다고 가정해보겠습니다.

 

	temp	item	count	price	rating
0	hot	coffee	1.0	3000	NaN
1	ice	juice	5.0	4000	3.0
2	ice	ade	NaN	5000	4.0
3	hot	milk	4.0	2000	2.5
4	NaN	tea	3.0	4000	3.0
5	ice	water	2.0	1000	4.5

 

위 데이터프레임을 보면, 첫 번째 0행과 2행, 4행에 결측치가 있는 것을 눈으로 볼 수 있습니다.

이제 isnull() 함수를 사용해보도록 하겠습니다.

 

df.isnull()

 

	temp	item	count	price	rating
0	False	False	False	False	True
1	False	False	False	False	False
2	False	False	True	False	False
3	False	False	False	False	False
4	True	False	False	False	False
5	False	False	False	False	False

 

그 결과, 위 데이터 프레임에서 결측치가 있는 곳은 True, 나머지는 False로 반환됨을 확인할 수 있습니다.

 

 

2. isnull().sum() : 칼럼마다 결측치 개수 세기

한편, 위와같이 데이터가 적어도 isnull()로 결측치가 있는지 확인하는 것은 좋은 방법처럼 보이진 않은데요,

이렇게 나타내기보다는, 각 칼럼마다 결측치가 몇 개 있는지 구하는 게 더 효과적일 수 있습니다.

 

칼럼마다 결측치의 갯수를 구하는 방법은 isnull() 함수 뒤에 sum() 함수를 사용하는 것으로, 다음과 같이 코드를 입력하면 됩니다.

 

df.isnull().sum()

 

temp      1
item      0
count     1
price     0
rating    1
dtype: int64

 

그 결과, 각 칼럼마다 결측치가 몇 개씩 있는지 한눈에 살펴볼 수 있는데요,

isnull().sum() 함수는 결측치를 제거하기 전 / 후로 결측치가 있는지 확인할 때 자주 사용된답니다.