Remover NaN da lista em Python

Muhammad Waiz Khan 30 janeiro 2023
  1. Remova NaN da lista em Python usando o método math.isnan()
  2. Remova NaN da lista em Python usando o método numpy.isnan()
  3. Remova NaN da lista de strings em Python
  4. Remova NaN da lista em Python usando o método pandas.isnull()
Remover NaN da lista em Python

Este tutorial examinará vários métodos para localizar e remover os valores NaN da lista em Python. O valor NaN na programação significa Not a Number, o que significa que o valor da variável não é um número.

Se um valor NaN ocorrer em un array ou lista, pode criar problemas e erros nos cálculos. Também examinaremos maneiras de remover os valores de string nan da lista neste tutorial. Podemos remover os valores NaN ou 'nan' da lista, usando os seguintes métodos.

Remova NaN da lista em Python usando o método math.isnan()

O método math.isan(value) recebe um número value como entrada e retorna True se o value é um valor NaN e retorna False caso contrário. Portanto, podemos verificar se existe um valor NaN em uma lista ou matriz de números usando o método math.isnan().

Precisamos do método math.isnan() porque if float('NaN') == float('NaN') retorna False em Python ou podemos dizer que dois valores NaN não são iguais em Python . O código de exemplo a seguir demonstra como usar o método math.isnan() para remover o valor NaN da lista.

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)

Resultado:

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

Remova NaN da lista em Python usando o método numpy.isnan()

O método np.isnan(array) toma o array como entrada e retorna True para o índice correspondente se for o valor NaN e retorna False caso contrário.

O código de exemplo a seguir demonstra como remover os valores NaN da lista usando o método numpy.isnan():

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)

Resultado:

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

Remova NaN da lista de strings em Python

Agora, vamos supor que a lista de números seja convertida para o tipo string e queremos verificar se ela contém algum valor NaN. Após a conversão para o tipo de string, o valor NaN torna-se uma string igual a 'nan' e pode ser facilmente detectado e removido comparando-o com 'nan'.

O código de exemplo a seguir demonstra como podemos remover o valor NaN da lista de tipo de dados de string:

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)

Resultado:

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

Remova NaN da lista em Python usando o método pandas.isnull()

O pandas.isnull(obj) toma um escalar ou um obj semelhante a um array como entrada e retorna True se o valor for igual a NaN, None ou NaT; caso contrário, retorna False.

O código de exemplo demonstra como usar o método pandas.isnull() para remover os valores NaN da lista do Python.

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)

Resultado:

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

Agora, suponha que não saibamos o tipo da lista ou se a lista contém os dados de vários tipos de dados. Neste caso, podemos verificar e remover os valores NaN e 'nan' da lista usando o método pandas.isnull() comparando cada valor da lista com o valor 'nan'.

Podemos usar o método pandas.isnull() porque, ao contrário dos métodos mencionados anteriormente, o método pandas.isnull() não retorna um erro se o tipo de dados string for fornecido como entrada. Portanto, podemos usar o método pandas.isnull() para remover os valores NaN e 'nan' da lista ou um array em Python.

O código de exemplo a seguir demonstra como usar o método pandas.isnull() e o valor 'nan' para remover os valores NaN e 'nan' da lista em Python.

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)

Resultado:

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

Artigo relacionado - Python List