반응형
질문
Python Pandas에서 DataFrame에 NaN 값이 하나 이상 있는지 확인하는 가장 좋은 방법은 무엇인가요?
pd.isnan
함수를 알고 있지만, 이 함수는 각 요소에 대한 부울 값의 DataFrame을 반환합니다. 여기에 있는 게시물도 제 질문에 정확히 대답하지는 않습니다.
답변
jwilner의 응답은 정확합니다. 나는 더 빠른 옵션이 있는지 알아보기 위해 탐색하고 있었는데, 내 경험상으로는 평면 배열의 합이 (이상하게도) 카운팅보다 빠릅니다. 이 코드가 더 빠릅니다:
df.isnull().values.any()
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
의 개수를 가지고 있습니다.
반응형
댓글