Python의 목록에서 NaN 제거

Muhammad Waiz Khan 2023년1월30일
  1. math.isnan()메소드를 사용하여 Python의 목록에서NaN제거
  2. numpy.isnan()메소드를 사용하여 Python의 목록에서NaN제거
  3. Python의 문자열 목록에서NaN제거
  4. pandas.isnull()메소드를 사용하여 Python의 목록에서NaN제거
Python의 목록에서 NaN 제거

이 자습서에서는 Python의 목록에서NaN값을 찾아 제거하는 다양한 방법을 살펴 봅니다. 프로그래밍에서NaN값은 변수 값이 숫자가 아님을 의미하는Not a Number을 의미합니다.

NaN값이 배열 또는 목록에서 발생하면 계산에 문제와 오류가 발생할 수 있습니다. 또한이 자습서의 목록에서 문자열 값nan을 제거하는 방법도 살펴볼 것입니다. 다음 방법을 사용하여 목록에서NaN또는'nan'값을 제거 할 수 있습니다.

math.isnan()메소드를 사용하여 Python의 목록에서NaN제거

math.isnan(value)메소드는 숫자value를 입력으로 취하고valueNaN값이면True를 리턴하고 그렇지 않으면False를 리턴합니다. 따라서math.isnan()메소드를 사용하여 숫자 목록 또는 배열에NaN값이 있는지 확인할 수 있습니다.

if float('NaN') == float('NaN')은 Python에서False를 반환하거나 두 개의NaN값이 Python에서 동일하지 않다고 말할 수 있기 때문에math.isnan()메서드가 필요합니다. 아래 예제 코드는math.isnan()메소드를 사용하여 목록에서NaN값을 제거하는 방법을 보여줍니다.

import math

mylist = [1, 2, float("nan"), 8, 6, 4, float("nan")]
print(mylist)
newlist = [x for x in mylist if math.isnan(x) == False]
print(newlist)

출력:

[1, 2, nan, 8, 6, 4, nan]
[1, 2, 8, 6, 4]

numpy.isnan()메소드를 사용하여 Python의 목록에서NaN제거

np.isnan(array)메소드는array를 입력으로 취하고NaN값이면 해당 색인에 대해True를 리턴하고 그렇지 않으면False를 리턴합니다.

아래 예제 코드는numpy.isnan()메소드를 사용하여 목록에서NaN값을 제거하는 방법을 보여줍니다.

import numpy as np

mylist = [1, 2, float("nan"), 8, 6, 4, float("nan")]
print(mylist)
newlist = [x for x in mylist if np.isnan(x) == False]
print(newlist)

출력:

[1, 2, nan, 8, 6, 4, nan]
[1, 2, 8, 6, 4]

Python의 문자열 목록에서NaN제거

이제 숫자 목록이 문자열 유형으로 변환되었다고 가정하고 여기에NaN값이 포함되어 있는지 확인하려고합니다. 문자열 유형으로 변환 한 후NaN값은'nan'과 같은 문자열이되며'nan'과 비교하여 쉽게 감지 및 제거 할 수 있습니다.

아래 예제 코드는 문자열 데이터 유형 목록에서NaN값을 제거하는 방법을 보여줍니다.

mylist = [1, 2, "nan", 8, 6, 4, "nan"]
mylist = [str(x) for x in mylist]
print(mylist)
newlist = [x for x in mylist if x != "nan"]
print(newlist)

출력:

['1', '2', 'nan', '8', '6', '4', 'nan']
['1', '2', '8', '6', '4']

pandas.isnull()메소드를 사용하여 Python의 목록에서NaN제거

pandas.isnull(obj)는 스칼라 또는 배열과 유사한obj를 입력으로 취하고 값이NaN,None 또는NaT와 같으면True를 반환합니다. 그렇지 않으면 False를 반환합니다.

예제 코드는pandas.isnull()메소드를 사용하여 Python 목록에서NaN값을 제거하는 방법을 보여줍니다.

import pandas as pd

mylist = [1, 2, float("nan"), 8, float("nan"), 4, float("nan")]
print(mylist)
newlist = [x for x in mylist if pd.isnull(x) == False]
print(newlist)

출력:

[1, 2, nan, 8, nan, 4, nan]
[1, 2, 8, 4]

이제 목록의 유형을 모르거나 목록에 다양한 데이터 유형의 데이터가 포함되어 있는지 여부를 가정합니다. 이 경우 목록의 각 값을'nan'값과 비교하여pandas.isnull()메서드를 사용하여 목록에서NaN값과'nan'값을 확인하고 제거 할 수 있습니다.

pandas.isnull()메소드를 사용할 수 있습니다. 이전에 언급 한 메소드와 달리pandas.isnull()메소드는 문자열 데이터 유형이 입력으로 제공되는 경우 오류를 리턴하지 않기 때문입니다. 따라서pandas.isnull()메소드를 사용하여 목록 또는 Python의 배열에서NaN'nan'값을 제거 할 수 있습니다.

아래 예제 코드는pandas.isnull()메소드와'nan'값을 사용하여 Python의 목록에서NaN'nan'값을 제거하는 방법을 보여줍니다.

import pandas as pd

mylist = ["John", 23, "nan", "New York", float("nan")]
print(mylist)
newlist = [x for x in mylist if pd.isnull(x) == False and x != "nan"]
print(newlist)

출력:

['John', 23, 'nan', 'New York', nan]
['John', 23, 'New York']

관련 문장 - Python List