Pandas DataFrame에서 NaN이 있는지 확인하는 방법

Suraj Joshi 2023년1월30일
  1. pandas.DataFrame.isnull()메소드
  2. pandas.DataFrame.isna()메소드
Pandas DataFrame에서 NaN이 있는지 확인하는 방법

NaN은 Pandas에서 결 측값을 나타내는 Not a Number를 나타냅니다. Python Pandas에서 NaN 값을 감지하기 위해 DataFrame 객체에 대해 isnull()isna() 메서드를 사용할 수 있습니다.

pandas.DataFrame.isnull()메소드

pandas.DataFrame.isnull() 메소드를 사용하여 DataFrame에서 NaN 값을 확인할 수 있습니다. 이 메소드는 검사 할 DataFrame의 해당 요소에 NaN 값이 있으면 요소가 True인 bool 값의 DataFrame을 리턴하고 그렇지 않으면 요소가 False입니다.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

df_check = df.isnull()

print(df_check)

출력:

   Student  Height  Weight
0    False   False    True
1    False   False   False
2    False    True   False
3    False    True    True
4    False   False   False

여기서 출력의 False값은 DataFrame df의 항목은 NaN이 아니며 True값은 DataFrame dfNaN항목을 나타냅니다.

DataFrame에 NaN값이 있는지 알고 싶다면 DataFrame에 NaN값이 있으면 True를 반환하는 isnull().values.any()메서드를 사용할 수 있습니다. DataFrame에 NaN항목이 하나도 없으면 False입니다.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

check_for_nan = df.isnull().values.any()
print(check_for_nan)

출력:

True

df.isnull().values는 데이터 프레임의 NumPy 표현을 반환합니다. numpy.any()는 요소 중 하나라도 True으로 평가되면 True을 반환합니다.

따라서 데이터 프레임에 NaN이 있으면df.isnull().values.any()True입니다.

NaN이 있는지 확인하는df.isnull().any().any()

df.any()는 어떤 요소가 True인지를 반환합니다. df가 데이터 프레임이면pd.Series를,dfpd.Series이면 부울 값을 반환합니다.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

check_for_nan = df.isnull().any().any()

print(check_for_nan)

출력:

True

위 예제에서isnull()다음에 두 개의 계단식any()메소드는 데이터 프레임에서 요소가 NaN이면True를 반환합니다.

NaN이 있는지 확인하기위한isnull().sum().sum()

특정DataFrame에서NaN 값의 총 개수를 계산하려면df.isnull().sum().sum()메소드가 올바른 솔루션입니다. 이 메서드는 전체 DataFrame에서 총 NaN 값을 반환합니다.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

total_nan_values = df.isnull().sum().sum()
print(total_nan_values)

출력:

4

결과가 0보다 크면 데이터 프레임에 NaN이 존재한다는 의미입니다.

pandas.DataFrame.isna()메소드

pandas.DataFrame.isna() 방법은
pandas.DataFrame.isnull(). 두 가지 방법의 작동에는 차이가 없습니다. 이름 만 다릅니다.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

df_check = df.isna()

check_for_any_nan = df.isna().values.any()
# Or
check_for_any_nan = df.isna().any().any()
total_nan_values = df.isna().sum().sum()
print(df_check)
print("NaN Presence:" + str(check_for_any_nan))
print("Total Number of NaN values:" + str(total_nan_values))

출력:

   Student  Height  Weight
0    False   False    True
1    False   False   False
2    False    True   False
3    False    True    True
4    False   False   False
NaN Presence:True
Total Number of NaN values:4

여기서 df.isna() 메소드는 df에 NaN 값이 있음을 나타내는 부울 값이 들어있는 DataFrame을 반환합니다. 마찬가지로df.isna().values.any(),df.isna().any().any()df.isna().sum().sum()NaN은 전체df의 값과dfNaN 항목 수입니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Pandas NaN