Eliminar filas con NaN en DataFrame de pandas | Eliminar y borrar datos faltantes (Ejemplo)
Table of Contents:
- Introducción
- Importar la biblioteca pandas
- Crear un marco de datos de ejemplo
- Eliminar filas con valores NaN en todo el marco de datos
- Eliminar filas con valores NaN en columnas específicas
- Mantener solo filas sin valores NaN en columnas específicas
- Eliminar filas con todos los valores NaN
- Mantener solo filas con un número mínimo de valores no NaN
- Conclusiones
- Recursos adicionales
Introducción
En este artículo, aprenderemos cómo eliminar filas con valores NaN en un marco de datos de Pandas en el lenguaje de programación Python. Exploraremos diferentes métodos y técnicas para manipular y limpiar nuestros datos. Veremos cómo aplicar estas operaciones tanto en todo el marco de datos como en columnas específicas.
Importar la biblioteca pandas
Antes de comenzar, debemos importar la biblioteca pandas. Esta biblioteca nos proporciona las funciones y herramientas necesarias para trabajar con marcos de datos en Python. Podemos importarla utilizando la siguiente línea de código:
import pandas as pd
Crear un marco de datos de ejemplo
Para demostrar cómo eliminar filas con valores NaN, primero necesitamos crear un marco de datos de ejemplo. Podemos hacerlo utilizando el constructor de marco de datos de pandas. A continuación se muestra un ejemplo de cómo crear un marco de datos con seis filas y tres columnas (X1, X2 y X3):
data = pd.DataFrame({'X1': [1, 2, 3, np.nan, 5, 6],
'X2': [np.nan, 8, 9, 10, 11, 12],
'X3': [13, 14, np.nan, 16, 17, 18]})
print(data)
El marco de datos resultante se verá así:
|
X1 |
X2 |
X3 |
0 |
1 |
nan |
13 |
1 |
2 |
8 |
14 |
2 |
3 |
9 |
nan |
3 |
nan |
10 |
16 |
4 |
5 |
11 |
17 |
5 |
6 |
12 |
18 |
Eliminar filas con valores NaN en todo el marco de datos
Si queremos eliminar todas las filas que contengan al menos un valor NaN en todo el marco de datos, podemos usar la función dropna()
. Esta función eliminará todas las filas que tengan al menos un valor NaN. A continuación se muestra cómo aplicar esta función:
data_cleaned = data.dropna()
print(data_cleaned)
El resultado será el siguiente marco de datos:
|
X1 |
X2 |
X3 |
1 |
2 |
8 |
14 |
4 |
5 |
11 |
17 |
5 |
6 |
12 |
18 |
Observamos que las filas con índices 0, 2 y 3, que contenían valores NaN, han sido eliminadas.
Eliminar filas con valores NaN en columnas específicas
Es posible que solo queramos eliminar filas con valores NaN en columnas específicas de nuestro marco de datos. Para hacer esto, podemos especificar las columnas en las que deseamos buscar valores NaN dentro de la función dropna()
. A continuación se muestra un ejemplo de cómo hacerlo:
data_cleaned_subset = data.dropna(subset=['X2'])
print(data_cleaned_subset)
El marco de datos resultante será:
|
X1 |
X2 |
X3 |
0 |
1 |
nan |
13 |
2 |
3 |
9 |
nan |
4 |
5 |
11 |
17 |
5 |
6 |
12 |
18 |
Observamos que solo se han eliminado las filas que tenían valores NaN en la columna X2.
Mantener solo filas sin valores NaN en columnas específicas
En lugar de eliminar filas con valores NaN, también podemos optar por quedarnos únicamente con las filas que tengan valores válidos en columnas específicas. Para hacer esto, podemos utilizar la función notna()
o notnull()
. Estas funciones nos permiten seleccionar solo las filas con valores no NaN en las columnas especificadas. A continuación se muestra un ejemplo de cómo usar la función notna()
:
data_subset_notna = data[data['X2'].notna()]
print(data_subset_notna)
El resultado será:
|
X1 |
X2 |
X3 |
1 |
2 |
8 |
14 |
2 |
3 |
9 |
nan |
4 |
5 |
11 |
17 |
5 |
6 |
12 |
18 |
Observamos que se han mantenido las filas con índices 0 y 3, ya que la columna X2 no tenía valores NaN en esas posiciones.
Eliminar filas con todos los valores NaN
Si queremos eliminar solo las filas que contienen valores NaN en todas las columnas, podemos usar el argumento how='all'
dentro de la función dropna()
. A continuación se muestra cómo hacerlo:
data_all_nan = data.dropna(how='all')
print(data_all_nan)
El resultado será:
|
X1 |
X2 |
X3 |
0 |
1 |
nan |
13 |
1 |
2 |
8 |
14 |
2 |
3 |
9 |
nan |
3 |
nan |
10 |
16 |
4 |
5 |
11 |
17 |
5 |
6 |
12 |
18 |
Observamos que solo se ha eliminado la fila con índice 3, ya que esta era la única fila con valores NaN en todas las columnas.
Mantener solo filas con un número mínimo de valores no NaN
Supongamos que queremos mantener solo las filas que tengan al menos un cierto número de valores no NaN. Para hacer esto, podemos usar el argumento thresh
dentro de la función dropna()
y especificar el número mínimo de valores no NaN que queremos en cada fila. A continuación se muestra un ejemplo:
data_min_non_nan = data.dropna(thresh=2)
print(data_min_non_nan)
El resultado será:
|
X1 |
X2 |
X3 |
1 |
2 |
8 |
14 |
2 |
3 |
9 |
nan |
4 |
5 |
11 |
17 |
5 |
6 |
12 |
18 |
Observamos que se han mantenido solo las filas con al menos dos valores no NaN.
Conclusiones
En este artículo, hemos aprendido cómo eliminar filas con valores NaN en un marco de datos de Pandas en Python. Hemos explorado diferentes métodos y técnicas, como la función dropna()
y las funciones notna()
, notnull()
, any()
y all()
. Estas operaciones nos permiten limpiar y manipular nuestros datos de manera eficiente y efectiva.
Recursos adicionales
Si deseas obtener más información sobre este tema, puedes visitar mi página web statisticsglobe.com. He publicado recientemente un tutorial en el que explico el contenido de este video con más detalle. Puedes encontrar el enlace a este tutorial en la descripción del video.
Preguntas frecuentes
P: ¿Qué es pandas en Python?
R: Pandas es una biblioteca de Python que proporciona estructuras de datos y herramientas de análisis de datos de alto rendimiento. Es ampliamente utilizado en el campo de la ciencia de datos y es especialmente útil para trabajar con datos tabulares y marcos de datos.
P: ¿Cómo puedo importar la biblioteca pandas en Python?
R: Puedes importar la biblioteca pandas utilizando la siguiente línea de código: import pandas as pd
.
P: ¿Por qué es importante eliminar filas con valores NaN en un marco de datos?
R: La presencia de valores NaN en un marco de datos puede afectar negativamente al análisis y las operaciones posteriores. Al eliminar estas filas, podemos garantizar la integridad y la calidad de nuestros datos.
P: ¿Existen otras formas de eliminar filas con valores NaN en un marco de datos?
R: Sí, además de las funciones y métodos que se mencionaron en este artículo, existen otras técnicas y enfoques que se pueden utilizar para manejar valores NaN en un marco de datos. Algunas de estas técnicas incluyen la imputación de valores, la interpolación y el rellenado con valores previos o siguientes.
P: ¿Cuál es la diferencia entre las funciones notna()
, notnull()
, any()
y all()
?
R: La función notna()
y notnull()
son funciones equivalentes que se utilizan para verificar si los valores en una serie o columna no son NaN o nulos. La función any()
devuelve True si al menos uno de los elementos en una serie o columna es verdadero, mientras que la función all()
devuelve True si todos los elementos son verdaderos.
P: ¿Dónde puedo encontrar más recursos y tutoriales sobre pandas y análisis de datos en Python?
R: Además de mi página web statisticsglobe.com, hay muchos recursos en línea disponibles que brindan tutoriales, documentación y ejemplos sobre pandas y análisis de datos en Python. Algunos sitios populares incluyen la documentación oficial de pandas, Stack Overflow y Towards Data Science.