Pandas DataFrame DataFrame.interpolate() Función

Suraj Joshi 30 enero 2023
  1. La sintaxis de pandas.DataFrame.interpolate():
  2. Códigos de ejemplo: Interpola todos los valores NaN en el DataFrame con el método DataFrame.interpolate()
  3. Códigos de ejemplo: DataFrame.interpolate() Método con el parámetro method
  4. Códigos de ejemplo: Pandas DataFrame.interpolate() Método con el parámetro axis para interpolar a lo largo del eje row
  5. Códigos de ejemplo: DataFrame.interpolate()Método con parámetro limit
  6. Códigos de ejemplo: DataFrame.interpolate() Método con parámetro limit_direction
  7. Interpolar datos de series temporales con el método DataFrame.interpolate()
Pandas DataFrame DataFrame.interpolate() Función

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 avatar Suraj Joshi avatar

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

LinkedIn

Artículo relacionado - Pandas DataFrame