Python

Eliminar filas o columnas con valores nulos en Python

La existencia de valores nulos en cualquier conjunto de datos supone un problema a la hora de realizar cualquier análisis. Saber cómo eliminar estos valores de manera fácil es clave de cara a automatizar los procesos de análisis. En esta entrada se va a explicar la forma de eliminar las filas o columnas que contenga valores nulos en Python. En primer lugar, se explicará la forma de hacerlo en numpy y posteriormente en dataframes de pandas.

Conjunto de datos de ejemplo

A la hora de cargar cualquier conjunto de datos es habitual encontrar que ciertas columnas o filas contengan valores nulos. Para ver como se pueden procesar estos lo primero que se ha hacer crear una matriz:

data = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9],
                 [np.nan, 1, 2],
                 [3, 4, 5]])

Como se puede ver se ha creado una matriz con tres filas y cinco columnas. La cuarta fila de la primera columna contiene un valor nulo.

Eliminación en numpy

Para identificar los elementos nulos se puede utilizar isnan. Con lo que obstine una matriz en la que se indica las posiciones en la que se encuentran los elementos.

np.isnan(data)
array([[False, False, False],
       [False, False, False],
       [False, False, False],
       [ True, False, False],
       [False, False, False]])

Para obtener las filas en las que existe por lo menos un elemento nulo se puede utilizar any(axis=1) sobre la matriz anterior.

np.isnan(data).any(axis=1)
array([False, False, False, True, False])

Ahora, simplemente se ha de seleccionar las filas que no contengan ningún elemento nulo.

data[~np.isnan(data).any(axis=1)]
array([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.], [3., 4., 5.]])

La eliminación también se puede realizar por columnas. Para ello se ha de indicar a la función any que trabaje por columnas

data[~np.isnan(data).any(axis=0)]
array([[2., 3.], [5., 6.], [8., 9.], [1., 2.], [4., 5.]])

Eliminación en pandas

En pandas la eliminación de las filas o columnas con nulos es más fácil. Para ello existe el método dropna en los dataframe. Para continuar lo primero que hay que hacer es convertir la matriz en un dataframe.

df = pd.DataFrame(data, columns=['feature_1', 'feature_2', 'feature_2'])

Ahora, para eliminar las filas con nulos simplemente se utiliza el método.

df.dropna()
 feature_1 feature_2 feature_2
0 1.0  2.0  3.0
1 4.0  5.0  6.0
2 7.0  8.0  9.0
4 3.0  4.0  5.0

Alternativamente, para eliminar las columnas se ha de indicar a dropna que use este eje.

df.dropna(1)
 feature_2 feature_2
0 2.0  3.0
1 5.0  6.0
2 8.0  9.0
3 1.0  2.0
4 4.0  5.0

Conclusiones

En esta entrada explicado como eliminar las filas o columnas con valores nulos en Python. En primer lugar, se ha explicado cómo hacer esto con numpy. Posteriormente se ha explicado la forma para cuando se trabaja con objetos dataframe en pandas.

Imágenes: Pixabay (markusspiske)

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: NumPyPandas

Recent Posts

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

14 horas ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

3 días ago

Cómo Comparar Dos Hipotecas con Todos los Gastos Incluidos

Comparar dos hipotecas parece sencillo: la que tenga el TIN más bajo es la mejor…

1 semana ago

Segmentación RFM: cómo clasificar tu cartera de clientes antes de calcular el CLV

En un artículo anterior vimos la fórmula clásica del CLV junto a sus limitaciones. Una…

1 semana ago

Los récords con asterisco, o la épica del titular sin contexto – El bestiario de los indicadores económicos absurdos (parte 8 y final)

Y llegamos al final de una serie que había programado para ser de tres entradas.…

2 semanas ago

PSI: Cómo Saber Cuándo tu Modelo de Credit Scoring se ha Degradado

Un modelo de credit scoring no es un artefacto estático. Se construye en un momento…

2 semanas ago

This website uses cookies.