Python/Pandas

[Pandas] 파이썬 결측치 확인 방법 : isnull, notnull

jimmy_AI 2022. 3. 6. 20:32
반응형

판다스 데이터프레임 NaN 값 위치, 개수 확인

안녕하세요. 이번 시간에는 파이썬 판다스 라이브러리에서

데이터프레임 내의 결측값 행을 확인하고, 각 열 별로 결측치의 개수를 세는 방법을

isnull, notnull 함수의 사용법을 기준으로 간략하게 설명해보도록 하겠습니다.

 

 

결측치 행 확인 : isnull

이해를 돕기 위하여, 아래와 같은 결측값을 일부 포함하는

간단한 데이터프레임이 있다고 가정해보도록 하겠습니다.

import pandas as pd
import numpy as np

a = {'A' : [np.nan, 2, 3, 4, 5, np.nan], 'B' : ['a', 'a', np.nan, 'b', 'b', 'b'], 'C' : [np.nan, 1.5, -0.3, np.nan, 4.2, np.nan]}
df = pd.DataFrame(a)
df

데이터프레임 전체에 isnull 함수를 적용하면 각 원소의 NaN 값 여부가 표시됩니다.

df.isnull()

결측치인 위치가 True로 표시된 것을 확인할 수 있었습니다.

 

 

결측치 위치 확인 방법

데이터프레임 인덱싱을 통하여 특정 열의 값이 결측치인 행들만 모아 반환하는 것이 가능합니다.

 

예를 들어, A열이 결측치인 행들만 추출하는 방법은 아래와 같습니다.

df[df['A'].isnull()]

 

만일, 두 개 이상의 열의 값에 대해 결측치 조건을 따지고 싶은 경우는 괄호로 조건들을 묶어

&(and), |(or)로 이어주시면 됩니다.

 

예를 들어, A열 혹은 B열이 결측치인 행들을 고르는 방법은 다음과 같습니다.

df[(df['A'].isnull()) | (df['B'].isnull())]

이와 같은 복합 조건 인덱싱은 NaN 값 체크 이외에도 다른 조건과도 결합이 가능합니다.

 

 

결측치 개수 확인 방법

개수 확인은 sum연산에서 True가 1, False가 0으로 취급되는 원리를 활용하면

isnull과 sum 함수를 연계하면서 각 열의 결측값 개수를 간단하게 구할 수 있습니다.

df.isnull().sum()

# 결과
A    2
B    1
C    3
dtype: int64
반응형

결측치가 아닌 행 확인 : notnull

이번에는 isnull 함수와 반대의 기능을 하는 함수로,

결측치가 아닌 행들만 뽑아낼 수 있는 notnull 함수의 사용 예제에 대하여 살펴보겠습니다.

 

데이터프레임에 notnull 함수를 직접 적용하면

isnull을 적용한 결과와 True / False가 뒤바뀐 결과가 반환됩니다.

df.notnull()

 

 

결측치가 아닌 값들의 위치 확인 방법

isnull 함수에서 수행한 인덱싱과 같은 방법을 isnull에서 notnull로 바꾸어서

그대로 적용해주시면 결측값을 제외한 행들만 추출해낼 수 있습니다.

 

이번에도 A열을 기준으로 결측값이 아닌 행들을 고르는 예시를 보여드리겠습니다.

df[df['A'].notnull()]

 

또한, A열과 B열의 두 개의 열에 대한 값이 모두 결측치가 아닌 행들만 추출한 예시는

아래처럼 작성이 가능할 것입니다.

df[(df['A'].notnull()) & (df['B'].notnull())]

 

 

결측치가 아닌 값들의 개수 확인 방법

마찬가지로, notnull과 sum 함수의 연계를 통하여

각 열에서 결측치를 제외한 값들의 개수도 확인할 수 있습니다.

df.notnull().sum()

# 결과
A    4
B    5
C    3
dtype: int64