Python >> Tutorial de Python >  >> Python Tag >> Pandas

Cómo soltar filas con valores NaN en Pandas DataFrame

En esta breve guía, verá cómo soltar filas con valores NaN en Pandas DataFrame.

Para comenzar, esta es la sintaxis que puede aplicar para colocar filas con valores NaN en su DataFrame:

df.dropna()

En la siguiente sección, observará los pasos para aplicar la sintaxis anterior en la práctica.

Pasos para colocar filas con valores NaN en Pandas DataFrame

Paso 1:crear un marco de datos con valores NaN

Digamos que tiene el siguiente conjunto de datos:

valores_1 valores_2
700 DDD
ABC 150
500 350
XYZ 400
1200 5000

Luego puede capturar los datos anteriores en Python creando un DataFrame:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

print (df)

Una vez que ejecute el código, obtendrá este DataFrame:

  values_1   values_2
0      700        DDD
1      ABC        150
2      500        350
3      XYZ        400
4     1200       5000

Tenga en cuenta que el DataFrame contiene ambos:

  • Datos numéricos:700, 500, 1200, 150 , 350 ,400, 5000
  • Valores no numéricos:ABC, XYZ, DDD

Luego puede usar to_numeric para convertir los valores en el conjunto de datos en un formato flotante. Pero dado que 3 de esos valores no son numéricos, obtendrá 'NaN' para esos 3 valores.

Aquí está el código que puede usar para obtener los valores de NaN:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')

print (df)

Como puede observar, la primera, segunda y cuarta fila ahora tienen valores NaN:

   values_1   values_2
0     700.0        NaN
1       NaN      150.0
2     500.0      350.0
3       NaN      400.0
4    1200.0     5000.0

Paso 2:suelte las filas con valores NaN en Pandas DataFrame

Para eliminar todas las filas con los valores de NaN, puede usar df.dropna().

Aquí está el código completo de Python para eliminar esas filas con los valores de NaN:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()

print (df)

Ejecute el código y verá solo dos filas sin ningún valor NaN:

   values_1   values_2
2     500.0      350.0
4    1200.0     5000.0

Es posible que haya notado que esas dos filas ya no tienen un índice secuencial. Actualmente es 2 y 4. Luego puede restablecer el índice para comenzar desde 0.

Paso 3 (opcional):restablecer el índice

Puede aplicar la siguiente sintaxis para restablecer un índice en Pandas DataFrame:

df.reset_index(drop=True)

Así que este es el código completo de Python para eliminar las filas con los valores de NaN y luego restablecer el índice:

import pandas as pd

df = pd.DataFrame({'values_1': ['700','ABC','500','XYZ','1200'],
                   'values_2': ['DDD','150','350','400','5000'] 
                   })

df = df.apply (pd.to_numeric, errors='coerce')
df = df.dropna()
df = df.reset_index(drop=True)

print (df)

Ahora notará que el índice comienza desde 0:

   values_1   values_2
0     500.0      350.0
1    1200.0     5000.0