Pandas DataFrame DataFrame.interpolate() Función
-
La sintaxis de
pandas.DataFrame.interpolate()
: -
Códigos de ejemplo: Interpola todos los valores
NaN
en elDataFrame
con el métodoDataFrame.interpolate()
-
Códigos de ejemplo:
DataFrame.interpolate()
Método con el parámetromethod
-
Códigos de ejemplo: Pandas
DataFrame.interpolate()
Método con el parámetroaxis
para interpolar a lo largo del ejerow
-
Códigos de ejemplo:
DataFrame.interpolate()
Método con parámetrolimit
-
Códigos de ejemplo:
DataFrame.interpolate()
Método con parámetrolimit_direction
-
Interpolar datos de series temporales con el método
DataFrame.interpolate()
La función Python Pandas DataFrame.interpolate()
llena los valores de NaN
en el DataFrame utilizando la técnica de interpolación.
La sintaxis de pandas.DataFrame.interpolate()
:
DataFrame.interpolate(
method="linear",
axis=0,
limit=None,
inplace=False,
limit_direction="forward",
limit_area=None,
downcast=None,
**kwargs
)
Parámetros
method |
linear , time , index , values , nearest , zero , slinear , quadratic , cubic , barycentric , krogh , polynomial , spline , piecewise_polynomial , from_derivatives , pchip , akima o None . Método utilizado para interpolar los valores de NaN . |
axis |
Interpolar los valores perdidos a lo largo de la fila (axis=0) o la columna (axis=1) |
limit |
Entero. Número máximo de NaNs consecutivos a interpolar. |
inplace |
Booleana. Si es True , modifica la llamada DataFrame en su lugar. |
limit_direction |
forward , backward o both . La dirección a lo largo de los NaOn se interpolan cuando se especifica el límite. |
limit_area |
None , inside , o outside . Restricción para interpolar cuando se especifica el limit . |
downcast |
Diccionario. Especifica la bajada de los tipos de datos |
**kwargs |
Argumentos de palabras clave para la función de interpolación. |
Retorna
Si inplace
es True
, un DataFrame
interpolando todos los valores NaN
usando el method
dado; de lo contrario None
.
Códigos de ejemplo: Interpola todos los valores NaN
en el DataFrame
con el método DataFrame.interpolate()
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3, None, 3],
'Y': [4, None, 8, None, 3]})
print("DataFrame:")
print(df)
filled_df = df.interpolate()
print("Interploated DataFrame:")
print(filled_df)
Producción:
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
Interploated DataFrame:
X Y
0 1.0 4.0
1 2.0 6.0
2 3.0 8.0
3 3.0 5.5
4 3.0 3.0
Interpola todos los valores NaN
en DataFrame
usando el método de interpolación linear
.
Este método es más inteligente comparado con pandas.DataFrame.fillna()
, que utiliza un valor fijo para reemplazar todos los valores NaN
en el DataFrame
.
Códigos de ejemplo: DataFrame.interpolate()
Método con el parámetro method
También podemos interpolar los valores de NaN
en DataFrame
con diferentes técnicas de interpolación estableciendo valores del parámetro method
en DataFrame.interpolate()
función.
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3, None, 3],
'Y': [4, None, 8, None, 3]})
print("DataFrame:")
print(df)
filled_df = df.interpolate(method='polynomial', order=2)
print("Interploated DataFrame:")
print(filled_df)
Producción:
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
Interploated DataFrame:
X Y
0 1.000000 4.000
1 2.000000 7.125
2 3.000000 8.000
3 3.368421 6.625
4 3.000000 3.000
Este método interpola todos los valores NaN
en el DataFrame
utilizando el método de interpolación polinomial
de 2º orden.
Aquí, order=2
es el argumento de la palabra clave para la función polinomial
.
Códigos de ejemplo: Pandas DataFrame.interpolate()
Método con el parámetro axis
para interpolar a lo largo del eje row
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3, None, 3],
'Y': [4, None, 8, None, 3]})
print("DataFrame:")
print(df)
filled_df = df.interpolate(axis=1)
print("Interploated DataFrame:")
print(filled_df)
Producción:
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
Interploated DataFrame:
X Y
0 1.0 4.0
1 2.0 2.0
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Aquí, establecemos axis=1
para interpolar los valores NaN
a lo largo del eje de la fila. En la 2ª fila, el valor NaN
se reemplaza usando la interpolación lineal a lo largo de la 2ª fila.
Sin embargo, en la 4ª fila, los valores NaN
permanecen incluso después de la interpolación, ya que ambos valores de la 4ª fila son NaN
.
Códigos de ejemplo: DataFrame.interpolate()
Método con parámetro limit
El parámetro limit
en el método DataFrame.interpolate()
restringe el número máximo de valores NaN
consecutivos a rellenar por el método.
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3, None, 3],
'Y': [4, None, None, None, 3]})
print("DataFrame:")
print(df)
filled_df = df.interpolate( limit = 1)
print("Interploated DataFrame:")
print(filled_df)
Producción:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 NaN
3 NaN NaN
4 3.0 3.0
Interploated DataFrame:
X Y
0 1.0 4.00
1 2.0 3.75
2 3.0 NaN
3 3.0 NaN
4 3.0 3.00
Aquí, una vez que un NaN
es llenado en una columna desde la parte superior, los siguientes valores NaN
consecutivos en la misma columna permanecen sin cambios.
Códigos de ejemplo: DataFrame.interpolate()
Método con parámetro limit_direction
El parámetro limit-direction
del método DataFrame.interpolate()
controla la dirección a lo largo de un eje particular, en el que se interpolan los valores.
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3, None, 3],
'Y': [4, None, None, None, 3]})
print("DataFrame:")
print(df)
filled_df = df.interpolate(limit_direction ='backward', limit = 1)
print("Interploated DataFrame:")
print(filled_df)
Producción:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 NaN
3 NaN NaN
4 3.0 3.0
Interploated DataFrame:
X Y
0 1.0 4.00
1 2.0 NaN
2 3.0 NaN
3 3.0 3.25
4 3.0 3.00
Aquí, una vez que se rellena un NaN
en una columna desde abajo, los siguientes valores NaN
consecutivos en la misma columna permanecen sin cambios.
Interpolar datos de series temporales con el método DataFrame.interpolate()
import pandas as pd
dates=['April-10', 'April-11', 'April-12', 'April-13']
fruits=['Apple', 'Papaya', 'Banana', 'Mango']
prices=[3, None, 2, 4]
df = pd.DataFrame({'Date':dates ,
'Fruit':fruits ,
'Price': prices})
print(df)
df.interpolate(inplace=True)
print("Interploated DataFrame:")
print(df)
Producción:
Date Fruit Price
0 April-10 Apple 3.0
1 April-11 Papaya NaN
2 April-12 Banana 2.0
3 April-13 Mango 4.0
Interploated DataFrame:
Date Fruit Price
0 April-10 Apple 3.0
1 April-11 Papaya 2.5
2 April-12 Banana 2.0
3 April-13 Mango 4.0
Debido a inplace=True
, el DataFrame
original se modifica después de llamar a interpolate()
función.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn