目次
1. Cómo identificar NaN en Python
¿Qué es NaN?
NaN (Not a Number) es un valor especial de punto flotante que indica que una operación numérica es inválida o indefinida. Generalmente aparece como resultado de divisiones por cero u operaciones no válidas, por lo que requiere especial atención en el análisis de datos y el procesamiento numérico. Si no se maneja correctamente, NaN puede provocar resultados inexactos o un funcionamiento inesperado del programa.Importancia de detectar NaN
Cuando un conjunto de datos contiene valores NaN, la fiabilidad de los datos y los resultados de los cálculos pueden verse afectados. Por ello, es fundamental detectar primero los NaN y después aplicar un tratamiento adecuado (eliminarlos, reemplazarlos, etc.).2. Cómo generar NaN
En Python, NaN se puede generar confloat('nan')
. Se utiliza para representar de forma explícita un resultado inválido en cálculos numéricos.num = float('nan')
print(num) # Resultado: nan
Diferencia con None
NaN indica que un valor numérico no es válido, mientras queNone
representa la ausencia de un valor. None
puede compararse con ==
, pero NaN no es igual ni siquiera a sí mismo, por lo que el uso de ==
no es adecuado.num = float('nan')
print(num == num) # Resultado: False
none_value = None
print(none_value == None) # Resultado: True

3. Métodos para detectar NaN
3.1. Usando la librería estándar (math.isnan()
)
En la librería estándar de Python, la función math.isnan()
permite comprobar si un valor es NaN. Devuelve True
si el valor es NaN.import math
num = float('nan')
print(math.isnan(num)) # Resultado: True
3.2. Usando NumPy (numpy.isnan()
)
NumPy, especializada en cálculos con arreglos y matrices, ofrece la función numpy.isnan()
para identificar NaN de manera eficiente dentro de arreglos. Es muy utilizada en análisis numérico y procesamiento científico de datos.import numpy as np
num_list = [1, 2, np.nan, 4]
print(np.isnan(num_list)) # Resultado: [False False True False]
3.3. Usando pandas (pandas.isna()
)
Cuando se trabaja con dataframes, pandas proporciona isna()
o isnull()
para identificar valores NaN. Estas funciones resultan útiles en la limpieza de datos y el tratamiento de valores faltantes.import pandas as pd
import numpy as np
data = pd.Series([1, 2, np.nan, 4])
print(pd.isna(data)) # Resultado: 0 False
# 1 False
# 2 True
# 3 False
4. Cómo eliminar o reemplazar valores NaN
4.1. Eliminar NaN de una lista
Para eliminar valores NaN dentro de una lista, se puede combinarmath.isnan()
con comprensión de listas.import math
num_list = [1, 2, float('nan'), 4]
clean_list = [num for num in num_list if not math.isnan(num)]
print(clean_list) # Resultado: [1, 2, 4]
4.2. Eliminar NaN en pandas (dropna()
)
Para eliminar NaN de un dataframe, se utiliza el método dropna()
. Con ello, se eliminan las filas o columnas que contengan NaN.import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, 6]})
clean_df = df.dropna()
print(clean_df)
4.3. Reemplazar NaN en pandas (fillna()
)
En lugar de eliminar NaN, también se puede reemplazarlos por un valor específico mediante el método fillna()
.import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, 6]})
df.fillna(0, inplace=True)
print(df)

5. Cálculos que contienen NaN
Cuando un cálculo contiene NaN, el resultado también será NaN. Para obtener resultados precisos, es necesario eliminar o reemplazar NaN previamente.import numpy as np
result = 10 + np.nan
print(result) # Resultado: nan
Ejemplo de cálculos estadísticos con NaN
En análisis estadístico con datos que contienen NaN, si se desea ignorarlos en el cálculo, NumPy ofrece la funciónnanmean()
, que calcula la media excluyendo los NaN.import numpy as np
data = [1, 2, np.nan, 4]
mean = np.nanmean(data) # Calcula la media ignorando NaN
print(mean) # Resultado: 2.3333...
6. Puntos a tener en cuenta al detectar NaN
6.1. Comportamiento de los operadores de comparación
NaN posee la característica especial de no ser igual a ningún número, ni siquiera a sí mismo. Por eso, no se debe usar==
o !=
para comprobar su existencia; es necesario emplear funciones específicas como isnan()
o isna()
.num = float('nan')
print(num == num) # Resultado: False
6.2. Consideraciones en la limpieza de datos
En análisis de datos, dejar NaN sin tratar impide obtener resultados exactos y puede distorsionar los cálculos. Para garantizar la fiabilidad de los datos, es esencial eliminar o reemplazar NaN antes de realizar operaciones.7. Conclusión
En Python, se puede detectar y manejar NaN de forma eficiente usandomath
, numpy
y pandas
. Comprender cómo tratar correctamente estos valores es un conocimiento fundamental para mantener la fiabilidad en el análisis de datos y cálculos numéricos, y resulta útil en cualquier ámbito de la programación.