programing

NaN과 None의 차이점은 무엇입니까?

bestprogram 2023. 7. 21. 21:47

NaN과 None의 차이점은 무엇입니까?

나는 판다를 사용하여 csv 파일의 두 열을 읽고 있습니다.readcsv()사전에 값을 할당합니다.열에는 숫자와 문자의 문자열이 포함됩니다.간혹 셀이 비어 있는 경우가 있습니다.내 생각에, 그 사전 항목에 읽힌 값은 다음과 같아야 합니다.None대신에nan할당되었습니다.분명히None빈 셀이 null 값을 가지고 있기 때문에 더 설명적인 반면,nan읽은 값이 숫자가 아니라고 합니다.

제가 이해한 것이 맞습니까, 무엇이 다른가요?None그리고.nan이유는nan대신 배정된None?

또한, 빈 셀에 대한 사전 검사에서 사용 중인 셀이 있는지 확인합니다.numpy.isnan():

for k, v in my_dict.iteritems():
    if np.isnan(v):

그러나 이 수표를 다음 기간에 사용할 수 없다는 오류가 발생합니다.v문자열이 아닌 정수나 플로트 변수를 사용해야 하기 때문인 것 같습니다.만약 이것이 사실이라면, 어떻게 확인합니까?v"빈 셀"에 대해/nan케이스?

NaN은 팬더에서 누락된 데이터대한 자리 표시자로 사용되며 일관성이 좋습니다.저는 보통 NaN을 "누락"으로 읽거나 번역합니다.문서에서 '누락된 데이터 관련 작업' 섹션도 참조하십시오.

당사는 'NA 대표성의 선택' 문서에 다음과 같이 쓰고 있습니다.

수년간의 생산 사용 후 [NaN]은 적어도 제 생각에는 일반적으로 NumPy 및 Python의 상황을 고려할 때 최고의 결정이라는 것이 입증되었습니다.특수값 NaN(Not-A-Number)은 어디서나 NA 값으로 사용되며, dtype 간에 사용하여 NA 값을 탐지할 수 있는 API 함수가 있습니다.
...
따라서 저는 NA를 나타내기 위해 플로트 및 객체 배열에서 특별한 값을 사용하고 NA가 도입되어야 할 때 정수 배열을 플로팅으로 승격시키는 훨씬 간단한 접근 방식을 위해 Pythonic "실용성이 순수성을 능가하는" 접근 방식을 선택하고 정수 NA 기능을 교환했습니다.

참고: 결측 데이터를 포함하는 정수 시리즈가 부동 소수점으로 업캐스트되는 "gotcha".

제 생각에 NaN(OverNone)을 사용하는 주된 이유는 효율성이 낮은 객체 dtype보다는 numpy의 float64 dtype으로 저장할 수 있기 때문입니다. NA 유형 프로모션참조하십시오.

#  without forcing dtype it changes None to NaN!
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벡터화된 연산을 허용하며, 이는 부동값이지만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

질문에 하기: 번째질문답하면려에두::
및 를 사용하여 결측 데이터(NaN)를 검정해야 합니다.

NaN수학적 연산에 대한 수치로 사용될 수 있는 반면,None할 수 없습니다(또는 적어도 해서는 안 됩니다).

NaN는 IEEE 754 부동 소수점 표준에 정의된 숫자 값입니다.None 유형Python 다니유입형는내)입니다.NoneType이 경우 "기본적으로 유효하지 않음"보다는 "비활성" 또는 "비움"에 가깝습니다.

주요 증상은 NaN이 포함된 어레이에서 평균 또는 합계를 수행하면 결과적으로 NaN이 생성된다는 것입니다.

반면에 다음을 사용하여 수학적 연산을 수행할 수 없습니다.None피연산자로서

경우에 그서, 경에따, 신은라당, 우래은을 할 수 .None알고리즘에 유효하지 않거나 존재하지 않는 값을 계산에 고려하지 않도록 하는 방법입니다.즉, 알고리즘이 각 값을 테스트하여 각 값이 다음 값인지 확인해야 합니다.None.

시키기 위해 있습니다. 를 들어 Numpy는 NaN 값을 피합니다.nansum그리고.nan_to_num예를들면.

함수는 어떤 것이 "숫자가 아님"인지 확인하고 변수가 숫자인지 여부를 반환합니다. 예를 들어isnan(2)▁false다를 반환합니다.

myVar is not None합니다.

은 Numpy 어가사항목을 합니다.isnan()를 왜하면그숫자배의의그열도배것고되열은모다로 입니다.NaN이러한 요소는 "빈"으로 간주됩니다.

다음은 차이점입니다.

  • nan에 .float
  • None에 .NoneType

저는 다음 기사가 매우 도움이 된다는 것을 알았습니다: https://medium.com/analytics-vidhya/dealing-with-missing-values-nan-and-none-in-python-6fc9b8fb4f31

언급URL : https://stackoverflow.com/questions/17534106/what-is-the-difference-between-nan-and-none