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.
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.
numpyPara 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.]])
pandasEn 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
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)
En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…
En la serie Creación de una API REST con Express y TypeScript construimos una API…
Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…
En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…
Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…
En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…
This website uses cookies.