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 DataFramemethod
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()
.