Rimuovi NaN dall'lista in Python

Muhammad Waiz Khan 30 gennaio 2023
  1. Rimuovere NaN dall’lista in Python utilizzando il metodo math.isnan()
  2. Rimuovere NaN dall’lista in Python utilizzando il metodo numpy.isnan()
  3. Rimuovere NaN dall’lista di stringhe in Python
  4. Rimuovere NaN dall’lista in Python usando il metodo pandas.isnull()
Rimuovi NaN dall'lista in Python

Questo tutorial esaminerà vari metodi per trovare e rimuovere i valori NaN dall’lista in Python. Il valore NaN nella programmazione significa Not a Number, il che significa che il valore della variabile non è un numero.

Se un valore NaN compare in un array o in una lista, può creare problemi ed errori nei calcoli. In questo tutorial esamineremo anche i modi per rimuovere i valori di stringa nan dall’lista. Possiamo rimuovere i valori NaN o 'nan' dall’lista, utilizzando i seguenti metodi.

Rimuovere NaN dall’lista in Python utilizzando il metodo math.isnan()

Il metodo math.isnan(value) prende un numero value come input e restituisce True se il value è un valore NaN e restituisce False in caso contrario. Quindi possiamo controllare se c’è un valore NaN in una lista o in un array di numeri usando il metodo math.isnan().

Abbiamo bisogno del metodo math.isnan() perché if float('NaN') == float('NaN') restituisce False in Python oppure possiamo dire che due valori NaN non sono uguali in Python . Il codice di esempio sotto mostra come utilizzare il metodo math.isnan() per rimuovere il valore NaN dall’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)

Produzione:

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

Rimuovere NaN dall’lista in Python utilizzando il metodo numpy.isnan()

Il metodo np.isnan(array), accetta array come input e restituisce True per l’indice corrispondente se è il valore NaN e restituisce False in caso contrario.

Il codice di esempio sotto mostra come rimuovere i valori NaN dall’lista utilizzando il metodo 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)

Produzione:

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

Rimuovere NaN dall’lista di stringhe in Python

Supponiamo ora che l’lista dei numeri sia convertito in tipo stringa e di voler controllare se contiene valori NaN. Dopo la conversione nel tipo stringa, il valore NaN diventa una stringa uguale a 'nan' e può essere facilmente rilevato e rimosso confrontandolo con 'nan'.

Il codice di esempio seguente mostra come rimuovere il valore NaN dall’lista del tipo di dati stringa:

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)

Produzione:

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

Rimuovere NaN dall’lista in Python usando il metodo pandas.isnull()

Il pandas.isnull(obj) accetta un obj scalare o simile a un array come input e restituisce True se il valore è uguale a NaN, None o NaT; in caso contrario, restituisce False.

Il codice di esempio mostra come utilizzare il metodo pandas.isnull() per rimuovere i valori NaN dall’lista di 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)

Produzione:

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

Supponiamo ora di non conoscere il tipo di lista o se l’lista contiene i dati di vari tipi di dati. In questo caso, possiamo controllare e rimuovere i valori NaN e 'nan' dalla lista usando il metodo pandas.isnull() confrontando ogni valore dell’lista con il valore 'nan'.

Possiamo usare il metodo pandas.isnull() perché, a differenza dei metodi menzionati in precedenza, il metodo pandas.isnull() non restituisce un errore se il tipo di dati stringa è dato come input. Quindi possiamo usare il metodo pandas.isnull() per rimuovere il valore NaN e 'nan' dalla lista o da un array in Python.

Il codice di esempio sotto mostra come usare il metodo pandas.isnull() e il valore 'nan' per rimuovere i valori NaN e 'nan' dall’lista in 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)

Produzione:

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

Articolo correlato - Python List