Función Pandas DataFrame DataFrame.fillna()

Suraj Joshi 30 enero 2023
  1. La sintaxis de pandas.DataFrame.fillna():
  2. Códigos de ejemplo: Rellena todos los valores NaN en el DataFrame con el Método DataFrame.fillna()
  3. Códigos de ejemplo: DataFrame.fillna() Método con el parámetro method
  4. Códigos de ejemplo: DataFrame.fillna() Método con parámetro limit
Función Pandas DataFrame DataFrame.fillna()

La función pandas.DataFrame.fillna() reemplaza los valores NaN en DataFrame con algún valor determinado.

La sintaxis de pandas.DataFrame.fillna():

DataFrame.fillna(
    value=None, method=None, axis=None, inplace=False, limit=None, downcast=None
)

Parámetros

value scalar, dict, Series, o DataFrame. Valor usado para reemplazar los valores NaN.
method backfill, bfill, pad, ffill o None. Método usado para llenar los valores de NaN.
axis Llenar los valores que faltan a lo largo de la fila (axis=0) o la fila (axis=1)
inplace Booleana. Si es True, modifica la llamada DataFrame en su lugar.
limit Entero. </Si se especifica el method, es el número máximo de valores consecutivos NaN a rellenar hacia adelante/atrás.
Si el method no se especifica, es el número máximo de NaN en el eje a rellenar.
downcast Diccionario. Especifica la bajada de los tipos de datos

Retorna

Si inplace es True, un DataFrame reemplazando todos los valores NaN por el value dado; de lo contrario None.

Códigos de ejemplo: Rellena todos los valores NaN en el DataFrame con el Método DataFrame.fillna()

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

filled_df = df.fillna(5)

print("Filled DataFrame:")
print(filled_df)

Resultado:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Filled DataFrame:
     X    Y
0  1.0  4.0
1  2.0  5.0
2  3.0  8.0
3  5.0  5.0
4  3.0  3.0

Rellena todos los valores NaN en el DataFrame con 5 como argumento en el método pandas.DataFrame.fillna().

DataFrame.fillna() con la media

También sería buena idea reemplazar los valores NaN de una columna por medio de esa columna.

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

df.fillna(df.mean(),inplace=True)

print("Filled DataFrame:")
print(df)

Resultado:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Filled DataFrame:
      X    Y
0  1.00  4.0
1  2.00  5.0
2  3.00  8.0
3  2.25  5.0
4  3.00  3.0

Rellena los valores NaN de la columna X por medio de la columna X y los valores NaN de la columna Y por medio de la columna Y.

Debido a inplace=True, el DataFrame original se modifica después de llamar a la función fillna().

DataFrame.fillna() Con 0

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

df.fillna(0,inplace=True)

print("Filled DataFrame:")
print(df)

Resultado:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Filled DataFrame:
     X    Y
0  1.0  4.0
1  2.0  0.0
2  3.0  8.0
3  0.0  0.0
4  3.0  3.0

Llena todo el NaN con 0.

Códigos de ejemplo: DataFrame.fillna() Método con el parámetro method

También podemos llenar los valores NaN en DataFrame usando diferentes opciones del parámetro method.

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

filled_df = df.fillna(method="backfill")

print("Filled DataFrame:")
print(filled_df)

Resultado:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  3.0  8.0
3  NaN  NaN
4  3.0  3.0
Filled DataFrame:
     X    Y
0  1.0  4.0
1  2.0  8.0
2  3.0  8.0
3  3.0  3.0
4  3.0  3.0

Poniendo method="backfill" llena todos los valores NaN de DataFrame con el valor después del valor NaN en la misma columna.

También podemos usar los métodos bfill, pad y ffill para llenar los valores NaN en DataFrame.

method Descripción
backfill / bfill rellena todos los valores NaN de DataFrame con el valor después del valor NaN en la misma columna.
ffill / pad rellena todos los valores NaN de DataFrame con el valor anterior al valor NaN en la misma columna.

Códigos de ejemplo: DataFrame.fillna() Método con parámetro limit

El parámetro limit en el método DataFrame.fillna restringe el número máximo de valores NaN consecutivos que el método puede llenar.

import pandas as pd
import numpy as np

df = pd.DataFrame({'X': [1, 2,np.nan, 3,3],
                   'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)

filled_df = df.fillna(3,limit=1)

print("Filled DataFrame:")
print(filled_df)

Resultado:

DataFrame:
     X    Y
0  1.0  4.0
1  2.0  NaN
2  NaN  8.0
3  3.0  NaN
4  3.0  3.0
Filled DataFrame:
     X    Y
0  1.0  4.0
1  2.0  3.0
2  3.0  8.0
3  3.0  NaN
4  3.0  3.0

Aquí, una vez que un NaN es llenado en una columna, el otro valor NaN en la misma columna permanece como está.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Pandas DataFrame