Función Pandas DataFrame DataFrame.fillna()
-
La sintaxis de
pandas.DataFrame.fillna(): -
Códigos de ejemplo: Rellena todos los valores
NaNen elDataFramecon el MétodoDataFrame.fillna() -
Códigos de ejemplo:
DataFrame.fillna()Método con el parámetromethod -
Códigos de ejemplo:
DataFrame.fillna()Método con parámetrolimit
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 is a backend software engineer at Matrice.ai.
LinkedIn