NaN은 pandas 에서 일관 되게 누락 된 데이터에 대한 자리 표시 자로 사용되며 일관성이 좋습니다. 나는 보통 NaN을 "missing" 으로 읽거나 번역 합니다. 또한 문서의 '누락 된 데이터 작업' 섹션을 참조하십시오 .
Wes는 'NA- 표현의 선택' 이라는 문서에 다음과 같이 씁니다 .
수년간의 프로덕션 사용 후 [NaN]은 적어도 제 생각에는 NumPy와 Python의 전반적인 상황을 고려할 때 최상의 결정임을 입증했습니다. 특수한 값이 NaN (Not-A-번호)가 사용되는 모든 곳에서 NA의 값으로, 그리고 API 기능이있다 isnull
와 notnull
이는 NA 값을 검출하기 위해 dtypes에 걸쳐 사용할 수 있습니다.
...
따라서, 저는 파이썬의“실용성이 순도를 이깁니다”접근 방식을 선택하고 정수 NA 기능을 선택하여 부동 소수점 및 객체 배열에서 특수 값을 사용하여 NA를 표시하고 NA가 있어야 할 때 정수 배열을 부동으로 승격시키는 훨씬 더 간단한 접근 방식을 사용했습니다. 도입.
참고 : 누락 된 데이터를 포함하는 정수 시리즈가 부동 소수점으로 업 캐스트된다는 "잘못" .
내 생각에 NaN (None 이상)을 사용하는 주된 이유는 덜 효율적인 객체 dtype이 아닌 numpy의 float64 dtype으로 저장할 수 있다는 것 입니다. NA 유형 프로모션을 참조하십시오 .
s_bad = pd.Series([1, None], dtype=object)
s_good = pd.Series([1, np.nan])
In [13]: s_bad.dtype
Out[13]: dtype('O')
In [14]: s_good.dtype
Out[14]: dtype('float64')
Jeff는 이에 대해 (아래) 설명합니다.
np.nan
벡터화 된 작업을 허용합니다. 그것의 float 값 None
은 정의에 따라 객체 유형을 강제 적용하여 기본적으로 numpy의 모든 효율성을 비활성화합니다.
따라서 3 번 빠르게 반복 : object == bad, float == good
즉, 많은 작업이 None 대 NaN에서도 여전히 잘 작동 할 수 있습니다 (그러나 지원되지 않을 수 있습니다. 즉, 때때로 놀라운 결과를 제공 할 수 있음 ).
In [15]: s_bad.sum()
Out[15]: 1
In [16]: s_good.sum()
Out[16]: 1.0
: 두 번째 질문에 대답하려면,
당신은 사용해야 pd.isnull
과 pd.notnull
비수 (NaN)에 누락 된 데이터를 테스트 할 수 있습니다.
qwerty
는 숫자가 아닙니다.