Pandas DataFrame fillna() Python

El método DataFrame.fillna() fills(reemplaza) los valores NA o NaN en el DataFrame con los valores especificados.

El método fillna() puede ser utilizado para rellenar valores NaN en todo el DataFrame, o en columnas específicas, o modificar en el lugar, o limitar el número de rellenos, o elegir un eje a lo largo del cual el relleno tiene que tener lugar, etc.

En este tutorial, recorreremos algunos de los escenarios mencionados para rellenar valores NaN en DataFrame con programas de ejemplo.

Sintaxis de DataFrame.fillna

La sintaxis del método DataFrame.fillna() es

DataFrame.fillna(self, value=None, method=None, axis=None, inplace=False, limit=None, downcast=None) → Union[ForwardRef(‘DataFrame’), NoneType][source]

Donde

  • value puede ser un escalar, un diccionario, una serie pandas o un DataFrame
  • method puede ser uno de estos valores {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}.
  • axis puede tomar 0 o ‘index’, 1 o ‘columns’.
  • inplace es un argumento booleano. Si es True, el DataFrame se modifica en el lugar, y si es False se devuelve un nuevo DataFrame con el contenido resultante.
  • limit toma un número entero o None. Es el número máximo de valores NaN consecutivos a rellenar hacia adelante/hacia atrás. Este argumento sólo se utiliza si se especifica el método.
  • downcast puede ser un diccionario o None.

Los argumentos se explican por sí mismos. Hemos proporcionado los posibles valores que se pueden pasar para estos argumentos. Y nos sumergiremos en los ejemplos para entender cómo se puede utilizar fillna().

Ejemplo 1: DataFrame.fillna() para sustituir los valores NaN por 0

Este es uno de los usos básicos del método fillna(), y un buen punto de partida para entender su uso.

En el siguiente programa, crearemos un DataFrame con valores que contengan NaN. Y utilizaremos el método fillna() para reemplazar estos valores NaN por 0. Pasamos el valor (value) 0 como argumento en fillna().

import pandas as pd
import numpy as np

df = pd.DataFrame(
	[[np.nan, 72, 67],
	[23, 78, 62],
	[32, 74, np.nan],
	[np.nan, 54, 76]],
	columns=['a', 'b', 'c'])

df_resultado = df.fillna(0)

print('DataFrame original\n', df) 
print('DataFrame resultante\n', df_resultado) 

Salida:

DataFrame original
       a   b     c
0   NaN  72  67.0
1  23.0  78  62.0
2  32.0  74   NaN
3   NaN  54  76.0
DataFrame resultante
       a   b     c
0   0.0  72  67.0
1  23.0  78  62.0
2  32.0  74   0.0
3   0.0  54  76.0

Ejemplo 2: DataFrame.fillna() para rellenar valores NaN con valores específicos de columna

El argumento value puede tomar un diccionario. Este diccionario que pasamos es un conjunto de pares de nombre y valor de columna. Los valores NaN de la columna se sustituyen por valores específicos de la columna.

En el siguiente programa, crearemos un DataFrame con valores que contengan NaN. Y utilizaremos el método fillna() para reemplazar estos valores NaN con diferentes valores en diferentes columnas. Pasaremos el diccionario especificando estas columnas y valores.

import pandas as pd
import numpy as np

df = pd.DataFrame(
	[[np.nan, 72, 67],
	[23, 78, 62],
	[32, 74, np.nan],
	[np.nan, 54, 76]],
	columns=['a', 'b', 'c'])

df_resultado = df.fillna({'a' : 0, 'b' : 1, 'c': 4})

print('DataFrame original\n', df) 
print('DataFrame con valores distintos por defectos para cada columna\n', df_resultado) 

Salida:

DataFrame original
       a   b     c
0   NaN  72  67.0
1  23.0  78  62.0
2  32.0  74   NaN
3   NaN  54  76.0
DataFrame con valores distintos por defectos para cada columna
       a   b     c
0   0.0  72  67.0
1  23.0  78  62.0
2  32.0  74   4.0
3   0.0  54  76.0

Ejemplo 3: DataFrame.fillna() con inplace=True

Por defecto, el método fillna() devuelve un DataFrame con los datos resultantes o modificados. Pero, si desea modificar el DataFrame original en su lugar, pase True para el argumento inplace.

import pandas as pd
import numpy as np

df = pd.DataFrame(
	[[np.nan, 72, 67],
	[23, np.nan, 62],
	[32, 74, np.nan],
	[np.nan, 54, 76]],
	columns=['a', 'b', 'c'])
print('DataFrame Original\n', df) 

df.fillna(value=4, inplace=True)
print('\nDataFrame Modificado\n', df) 

Salida:

DataFrame Original
       a     b     c
0   NaN  72.0  67.0
1  23.0   NaN  62.0
2  32.0  74.0   NaN
3   NaN  54.0  76.0

DataFrame Modificado
       a     b     c
0   4.0  72.0  67.0
1  23.0   4.0  62.0
2  32.0  74.0   4.0
3   4.0  54.0  76.0

En este tutorial de Ejemplos de Python, hemos aprendido sobre el método DataFrame.fillna().

Deja una respuesta