판다스 데이터프레임 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
'Python > Pandas' 카테고리의 다른 글
[Pandas] 파이썬 결측치 포함 행, 열 제거 dropna 함수 사용법 (2) | 2022.03.07 |
---|---|
[Pandas] to_datetime 사용법, 날짜 format 지정 방법 (5) | 2022.03.02 |
[Pandas] 파이썬 인덱스 설정 방법 정리(set_index 함수) (2) | 2022.03.01 |