Programma
Nel mondo della data science e dell’analisi, imbattersi in dati mancanti è più la regola che l’eccezione. I valori mancanti possono falsare le analisi, portare a conclusioni errate e in generale ostacolare il flusso di elaborazione dei dati. Affrontare questi vuoti è fondamentale per mantenere l’integrità della tua analisi. Questo articolo ha l’obiettivo di fornirti diversi modi per identificare i valori NaN (Not a Number) in Python.
La risposta breve: usa la funzione isnan() di NumPy o il metodo .isna() di Pandas
Quando gestisci valori mancanti in Python, l’approccio dipende in gran parte dalla struttura dati con cui stai lavorando.
Per singoli valori o array: usa NumPy
La funzione isnan() di NumPy è ideale per identificare i NaN in array numerici o singoli valori, offrendo una soluzione semplice ed efficiente. Ecco un esempio pratico!
import numpy as np
# Single value check
my_missing_value = np.nan
print(np.isnan(my_missing_value))
# Output: True
# Array check
my_missing_array = np.array([1, np.nan, 3])
nan_array = np.isnan(my_missing_array)
print(nan_array)
# Output: [False True False]
Per DataFrame: usa Pandas
Pandas offre metodi completi come .isna() e .isnull() per rilevare i valori mancanti su oggetti DataFrame o Series, integrandosi perfettamente nei flussi di analisi dei dati.
import pandas as pd
import numpy as np
my_dataframe = pd.DataFrame({
'Column1': ["I", "Love", np.nan],
'Column2': ["Python", np.nan, "The Best"]
})
print(my_dataframe.isna())
# Column1 Column2
# 0 False False
# 1 False True
# 2 True False
Quando esegui questo codice, l’output indicherà la presenza di valori NaN in un contesto più interessante, come mostrato sopra.
La differenza tra NaN e None
Capire la distinzione tra NaN e None è fondamentale in Python. NaN è una rappresentazione in virgola mobile di "Not a Number", usata principalmente nei calcoli numerici. None, invece, è l’oggetto di Python che rappresenta l’assenza di un valore, simile a null in altri linguaggi. Mentre NaN è usato in contesti matematici o scientifici, None è più generico e indica la mancanza di un dato.
4 modi per verificare i NaN in Python
Individuare i valori mancanti nei dataset è un passaggio critico nel preprocessing dei dati. Esploriamo quattro metodi pratici per controllare i valori NaN in Python, proseguendo con gli esempi coinvolgenti che abbiamo già usato.
1. Verificare i NaN con np.isnan()
Come abbiamo visto, NumPy offre un approccio diretto per identificare i valori NaN sia in singoli valori sia in array, essenziale per l’analisi dei dati numerici.
import numpy as np
# Checking a single value
print(np.isnan(np.nan))
# Output: True
# Checking an array
my_array = np.array([1, 5, np.nan])
print(np.isnan(my_array))
# Output: [False False True]
2. Verificare i NaN con pd.isna()
Pandas semplifica l’individuazione dei valori NaN nelle strutture dati, dagli scalari ai DataFrame complessi, risultando prezioso per le attività di manipolazione dei dati.
import numpy as np
import pandas as pd
# Checking a single value
print(pd.isna(np.nan))
# Output: True
# Checking a pandas Series
my_series = pd.Series(["Python", np.nan, "The Best"])
print(my_series.isna())
# Output:
# 0 False
# 1 True
# 2 False
# Checking a pandas DataFrame
my_dataframe = pd.DataFrame({
'Column1': ["I", "Love", np.nan],
'Column2': ["Python", np.nan, "The Best"]
})
print(pd.isna(my_dataframe)) # Output a DataFrame with True for missing values
3. Verificare i NaN nei DataFrame con i metodi di Pandas .isna() o .isnull()
I DataFrame di Pandas offrono anche i metodi .isna() e .isnull() per individuare senza sforzo i valori mancanti nei dataset, fornendo una panoramica chiara della completezza dei dati.
import numpy as np
import pandas as pd
# Create a dataframe with missing values
my_dataframe = pd.DataFrame({
'Column1': ["I", "Love", np.nan],
'Column2': ["Python", np.nan, "The Best"]
})
print(my_dataframe.isna())
# Output:
# Column1 Column2
# 0 False False
# 1 False True
# 2 True False
print(my_dataframe.isnull())
# Output:
# Column1 Column2
# 0 False False
# 1 False True
# 2 True False
4. Verificare i NaN nei DataFrame usando math.isnan()
Per controlli su singoli numeri, la funzione math.isnan() offre una soluzione semplice ma efficace, soprattutto quando lavori con tipi di dati Python puri.
import math
# Assuming my_number is a float or can be converted to one
my_number = float('nan')
print(math.isnan(my_number))
# Output: True
Considerazioni finali e risorse aggiuntive
Identificare e gestire i valori NaN è un passaggio fondamentale per pulire e preparare i tuoi dati all’analisi. Che tu stia lavorando con array, series o data frame, conoscere gli strumenti e i metodi disponibili in Python per trattare i dati mancanti è essenziale. Per approfondire, dai un’occhiata alle seguenti risorse:
Adel è un formatore e speaker in Data Science, nonché VP dei Media presso DataCamp. Adel ha pubblicato diversi corsi e sessioni di formazione live su analisi dei dati, machine learning e data engineering. È appassionato di diffondere competenze e alfabetizzazione sui dati all'interno delle organizzazioni e di esplorare l'intersezione tra tecnologia e società. Ha un MSc in Data Science and Business Analytics. Nel tempo libero, lo trovi spesso in compagnia del suo gatto Louis.


