Cómo reemplazar todos los valores de NaN con ceros en una columna de un DataFrame de pandas

Ahmed Waheed 30 enero 2023
  1. Método df.fillna() para reemplazar todos los valores de NaN por ceros
  2. Método df.replace()
Cómo reemplazar todos los valores de NaN con ceros en una columna de un DataFrame de pandas

Cuando trabajamos con grandes conjuntos de datos, a veces hay valores de NaN en el conjunto de datos que desea reemplazar con algún valor promedio o con un valor adecuado. Por ejemplo, tiene una lista de calificación de estudiantes, y algunos estudiantes no intentaron la prueba, por lo que el sistema ingresó automáticamente NaN en lugar de 0.0. A continuación se enumeran las diferentes formas de lograr esta tarea.

  1. df.fillna()
  2. df.replace()

Utilizaremos el mismo DataFrame en las siguientes secciones de la siguiente manera,

import pandas as pd
import numpy as np

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
print(df)

El siguiente es el DataFrame con NaN en grado.

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    NaN
2  George          50   95.0
3    Noah          65    NaN

Método df.fillna() para reemplazar todos los valores de NaN por ceros

Reemplacemos los valores NaN con la ayuda del método df.fillna().

import pandas as pd
import numpy as np

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
df = df.fillna(0)
print(df)

La siguiente es la salida con NaN reemplazado por cero.

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    0.0
2  George          50   95.0
3    Noah          65    0.0

El método df.fillna() llena los valores NaN con el valor dado. No cambia los datos del objeto, pero devuelve un nuevo DataFrame por defecto a menos que el parámetro inplace esté configurado como True.

Podríamos reescribir los códigos anteriores con el parámetro inplace habilitado para ser True.

import pandas as pd
import numpy as np

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
df.fillna(0, inplace=True)
print(df)

Método df.replace()

Este método funciona igual que df.fillna() para reemplazar NaN por 0. df.replace() también se puede usar para reemplazar otro número. Echemos un vistazo a los códigos.

import pandas as pd
import numpy as np

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, np.nan, 95, np.nan],
}
df = pd.DataFrame(data)
nan_replaced = df.replace(np.nan, 0)
print(nan_replaced)

Lo siguiente será la salida.

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    0.0
2  George          50   95.0
3    Noah          65    0.0

Artículo relacionado - Pandas NaN