파이썬 inf 확인 - paisseon inf hwag-in

코드 예제

팬더 데이터 프레임 inf 교체

df.replace([np.inf, -np.inf], np.nan)

nan 및 infs 파이썬 제거

df.replace([np.inf, -np.inf], np.nan).dropna(axis=1)

비슷한 페이지

예제가있는 유사한 페이지

다른 언어로

이 페이지는 다른 언어로되어 있습니다

empty row

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

..................................................................................................................

이 카테고리에서 인기

카테고리에 예제가 포함 된 인기있는 페이지

empty row

프로그래밍/Python

[Python] DataFrame np.inf, -np.inf 처리하기

엔지니어 2021. 3. 31. 00:17

Python Pandas 패키지의 DataFrame을 사용하다 보면

데이터프레임의 값이 np.inf 또는 -np.inf로 채워진 경우가 있습니다.

  • inf : Infinitie (무한)을 의미

np.inf, -np.inf어떤 사칙연산을 수행해도 np.inf or -np.inf 로만 변환되기에

코드에서 종종 오류 일으킵니다.

이때 DataFrame.replace 메서드로 간단하게 np.inf, -np.inf를 None값으로 대체할 수 있습니다.

import pandas as pd import numpy as np df = pd.DataFrame([1000, 2000, 3000, -4000, np.inf, -np.inf]) print("Original DataFrame:") print(df) print("Removing infinite values:") df = df.replace([np.inf, -np.inf], np.nan) # replace 메서드로 np.inf를 None(np.nan)으로 변경 print(df)======= Output ====== >>> Original DataFrame: 0 0 1000.0 1 2000.0 2 3000.0 3 -4000.0 4 inf 5 -inf Removing infinite values: 0 0 1000.0 1 2000.0 2 3000.0 3 -4000.0 4 NaN 5 NaN

혹시 궁금하신 사항은 댓글 남겨주세요.

감사합니다.

1. w3resource, [Pandas: Remove infinite values from a given DataFrame], //www.w3resource.com/python-exercises/pandas/python-pandas-data-frame-exercise-52.php
2. pandas 공식문서, [pandas.DataFrame.replace], //pandas.pydata.org/docs/reference/api/pandas.DataFrame.replace.html

Python 에 서 는 다음 과 같은 방식 으로 플러스 와 마이너스 가 무한 하 다 는 것 을 잘 알 고 있 습 니 다.

float("inf") # float("-inf") #

이용inf(infinite)에 0 을 곱 하면 얻 을 수 있다not-a-number(NaN).만약 하나의 수가 인 피 니 트 를 초과 한다 면,그것 은 하나의NaN(not a number)수 이다.NaN 수 에서 그의 exponent 부분 은 표현 가능 한 최대 치,즉 FF(단일 정밀도),7FF(이중 정밀도)와 7FFF(이중 정밀도 확장)입 니 다.NaN 수 와 infinite 수의 차 이 는 infinite 수의 significant 부분 은 0 값(두 정밀도 의 bit 63 위 를 1 로 확장)이다.반면 NaN 수의 significant 부분 은 0 값 이 아니다.
우 리 는 먼저 다음 과 같은 코드 를 봅 시다.

>>> inf = float("inf") >>> ninf = float("-inf") >>> nan = float("nan") >>> inf is inf True >>> ninf is ninf True >>> nan is nan True >>> inf == inf True >>> ninf == ninf True >>> nan == nan False >>> inf is float("inf") False >>> ninf is float("-inf") False >>> nan is float("nan") False >>> inf == float("inf") True >>> ninf == float("-inf") True >>> nan == float("nan") False

Python 에서 부동 소수점 이 NaN 인지 아 닌 지 를 판단 해 보지 않 았 다 면 이상 의 출력 결과 에 의아해 할 것 이다.우선,플러스 마이너스 무한 과 NaN 자체 와 자신 이 is 로 조작 한 결과 모두 True 이 고 여 기 는 문제 가 없 는 것 같 습 니 다.그러나==으로 조작 하면 결 과 는 달 라 졌 고,낸 은 이때 False 가 됐다.각각 float 로 변 수 를 다시 정의 하여 is 와==을 비교 하면 결 과 는 여전히 예상 밖 이다.이런 상황 이 발생 한 원인 은 약간 복잡 하 니,여 기 는 군더더기 가 없 으 니,관심 이 있 으 면 관련 자 료 를 찾 아 볼 수 있다.
inf 와 Nan 값 을 정확하게 판단 하려 면 math 모듈math.isinf 과math.isnan 함 수 를 사용 해 야 합 니 다.

>>> import math >>> math.isinf(inf) True >>> math.isinf(ninf) True >>> math.isnan(nan) True >>> math.isinf(float("inf")) True >>> math.isinf(float("-inf")) True >>> math.isnan(float("nan")) True

이렇게 하면 틀림없다.내 가 이 문 제 를 이야기 하고 있 는 이상 파 이 썬 에서 is 와==로 대상 이 플러스 마이너스 나 NaN 인지 아 닌 지 를 판단 하려 고 하지 말 라 고 충고 하 는 것 이다.너 는 순 순 히 math 모듈 을 사용 해라,그렇지 않 으 면 불 에 타 는 것 이다.
물론 다른 방법 으로 판단 할 수도 있 습 니 다.다음은 NaN 으로 예 를 들 지만 헷 갈 리 지 않도록 math 모듈 을 사용 하 는 것 을 추천 합 니 다.
대상 자체 로 자신 을 판단 하 다.

>>> def isnan(num): ... return num != num ... >>> isnan(float("nan")) True

numpy 모듈 함수 로

>>> import numpy as np >>> >>> np.isnan(np.nan) True >>> np.isnan(float("nan")) True >>> np.isnan(float("inf")) False

Numpy 의 isnan 함 수 는 전체 list 를 판단 할 수 있 습 니 다.

>>> lst = [1, float("nan"), 2, 3, np.nan, float("-inf"), 4, np.nan] >>> lst [1, nan, 2, 3, nan, -inf, 4, nan] >>> np.isnan(lst) array([False, True, False, False, True, False, False, True], dtype=bool)

여기np.isnan 는 불 값 배열 을 되 돌려 줍 니 다.해당 위치 가 NaN 이면 True 로 돌아 갑 니 다.그렇지 않 으 면 False 로 돌아 갑 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.

Toplist

최신 우편물

태그