본문 바로가기
Python/Python FAQ

Python 판다스 데이터프레임에서 어떤 값이 NaN인지 확인하는 방법은 무엇인가요?, How to check if any value is NaN in a Pandas DataFrame

by 베타코드 2023. 7. 26.
반응형

질문


Python Pandas에서 DataFrame에 NaN 값이 하나 이상 있는지 확인하는 가장 좋은 방법은 무엇인가요?

pd.isnan 함수를 알고 있지만, 이 함수는 각 요소에 대한 부울 값의 DataFrame을 반환합니다. 여기에 있는 게시물도 제 질문에 정확히 대답하지는 않습니다.


답변


jwilner의 응답은 정확합니다. 나는 더 빠른 옵션이 있는지 알아보기 위해 탐색하고 있었는데, 내 경험상으로는 평면 배열의 합이 (이상하게도) 카운팅보다 빠릅니다. 이 코드가 더 빠릅니다:

df.isnull().values.any()

enter image description here

import numpy as np
import pandas as pd
import perfplot


def setup(n):
    df = pd.DataFrame(np.random.randn(n))
    df[df > 0.9] = np.nan
    return df


def isnull_any(df):
    return df.isnull().any()


def isnull_values_sum(df):
    return df.isnull().values.sum() > 0


def isnull_sum(df):
    return df.isnull().sum() > 0


def isnull_values_any(df):
    return df.isnull().values.any()


perfplot.save(
    "out.png",
    setup=setup,
    kernels=[isnull_any, isnull_values_sum, isnull_sum, isnull_values_any],
    n_range=[2 ** k for k in range(25)],
)

df.isnull().sum().sum()은 조금 느립니다. 그러나 물론 추가 정보인 NaN의 개수를 가지고 있습니다.

반응형

댓글