Pandas DataFrame DataFrame.interpolate() Función
- 
          
            La sintaxis de pandas.DataFrame.interpolate():
- 
          
            Códigos de ejemplo: Interpola todos los valores NaNen elDataFramecon 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ámetroaxispara 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,akimaoNone. Método utilizado para interpolar los valores deNaN. | 
| axis | Interpolar los valores perdidos a lo largo de la fila(axis=0) o lacolumna(axis=1) | 
| limit | Entero. Número máximo de NaNsconsecutivos a interpolar. | 
| inplace | Booleana. Si es True, modifica la llamadaDataFrameen su lugar. | 
| limit_direction | forward,backwardoboth. La dirección a lo largo de los NaOn se interpolan cuando se especifica el límite. | 
| limit_area | None,inside, ooutside. Restricción para interpolar cuando se especifica ellimit. | 
| 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