Fonction Pandas DataFrame DataFrame.interpolate()

Suraj Joshi 30 janvier 2023
  1. Syntaxe de pandas.DataFrame.interpolate() :
  2. Exemples de codes : Interpoler toutes les valeurs NaN dans DataFrame avec la méthode DataFrame.interpolate()
  3. Exemples de codes : DataFrame.interpolate() Méthode avec le paramètre method
  4. Exemples de codes : Pandas DataFrame.interpolate() Méthode avec paramètre axis pour interpoler le long de l’axe ligne
  5. Exemples de codes : DataFrame.interpolate() Méthode avec paramètre limit
  6. Exemples de codes : DataFrame.interpolate() Méthode avec paramètre limit_direction
  7. Interpoler des données de séries temporelles avec la méthode DataFrame.interpolate()
Fonction Pandas DataFrame DataFrame.interpolate()

La fonction Python Pandas DataFrame.interpolate() remplit les valeurs NaN dans le DataFrame en utilisant une technique d’interpolation.

Syntaxe de pandas.DataFrame.interpolate() :

DataFrame.interpolate(
    method="linear",
    axis=0,
    limit=None,
    inplace=False,
    limit_direction="forward",
    limit_area=None,
    downcast=None,
    **kwargs
)

Paramètres

method linear, time, index, values, nearest, zero, slinear, quadratic, cubic, barycentric, krogh, polynomial, spline, piecewise_polynomial, from_derivatives, pchip, akima ou None. Méthode utilisée pour l’interpolation des valeurs de NaN.
axis Interpoler les valeurs manquantes le long de la ligne (axis=0) ou de la colonne (axis=1)
limit Nombre entier. Nombre maximum de NaN consécutifs à interpoler.
inplace Booléen. Si True, modifiez l’appelant DataFrame en place
limit_direction forward, backward ou both. Les directions le long des NaNs sont interpolées lorsque la limit est spécifiée
limit_area None, inside, ou outside. Restriction pour l’interpolation lorsque la limit est spécifiée
downcast Dictionnaire. Précise les types de données
**kwargs Arguments de mots-clés pour la fonction d’interpolation.

Renvoie

Si inplace est True, une DataFrame interpolant toutes les valeurs NaN en utilisant une method donnée ; sinon None.

Exemples de codes : Interpoler toutes les valeurs NaN dans DataFrame avec la méthode 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)

Production:

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

Il interpole toutes les valeurs de NaN dans DataFrame en utilisant la méthode d’interpolation linear.

Cette méthode est plus intelligente que pandas.DataFrame.fillna(), qui utilise une valeur fixe pour remplacer toutes les valeurs NaN dans la DataFrame.

Exemples de codes : DataFrame.interpolate() Méthode avec le paramètre method

Nous pouvons également interpoler les valeurs de NaN dans DataFrame avec différentes techniques d’interpolation en fixant les valeurs du paramètre method dans la fonction 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(method='polynomial', order=2)

print("Interploated DataFrame:")
print(filled_df)

Production:

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

Cette méthode interpole toutes les valeurs de NaN dans le DataFrame en utilisant la méthode d’interpolation polynomial du 2ème ordre.

Ici, order=2 est le mot-clé argument pour la fonction polynomial.

Exemples de codes : Pandas DataFrame.interpolate() Méthode avec paramètre axis pour interpoler le long de l’axe ligne

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)

Production:

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

Ici, nous définissons axis=1 pour interpoler les valeurs NaN le long de l’axe de la ligne. Dans la 2ème ligne, la valeur NaN est remplacée par une interpolation linéaire le long de la 2ème ligne.

Cependant, dans la 4ème ligne, les valeurs NaN restent même après l’interpolation, car les deux valeurs de la 4ème ligne sont NaN.

Exemples de codes : DataFrame.interpolate() Méthode avec paramètre limit

Le paramètre limit de la méthode DataFrame.interpolate() limite le nombre maximum de valeurs NaN consécutives à remplir par la méthode.

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)

Production:

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

Ici, une fois qu’un NaN est rempli dans une colonne à partir du haut, les valeurs consécutives suivantes de NaN dans la même colonne restent inchangées.

Exemples de codes : DataFrame.interpolate() Méthode avec paramètre limit_direction

Le paramètre limit-direction de la méthode DataFrame.interpolate() contrôle la direction le long d’un axe particulier, dans lequel les valeurs sont interpolées.

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)

Production:

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

Ici, une fois qu’un NaN est rempli dans une colonne à partir du bas, les valeurs consécutives suivantes de NaN dans la même colonne restent inchangées.

Interpoler des données de séries temporelles avec la méthode 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)

Production:

       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

En raison de inplace=True, la DataFrame originale est modifiée après avoir appelé la fonction interpolate().

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Article connexe - Pandas DataFrame