Pandas DataFrame Funzione DataFrame.interpolate()

Suraj Joshi 30 gennaio 2023
  1. Sintassi di pandas.DataFrame.interpolate():
  2. Codici di esempio: interpola tutti i valori NaN in DataFrame con il metodo DataFrame.interpolate()
  3. Codici di esempio: Metodo DataFrame.interpolate() Con il parametro method
  4. Codici di esempio: Pandas Metodo DataFrame.interpolate() con il parametro axis per interpolare lungo l’asse row
  5. Codici di esempio: Metodo DataFrame.interpolate() con parametro limit
  6. Codici di esempio: Metodo DataFrame.interpolate() con parametro limit_direction
  7. Interpolare i dati delle serie temporali con il metodo DataFrame.interpolate()
Pandas DataFrame Funzione DataFrame.interpolate()

La funzione Python Pandas DataFrame.interpolate() riempie i valori NaN nel DataFrame utilizzando la tecnica di interpolazione.

Sintassi di pandas.DataFrame.interpolate():

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

Parametri

method linear, time, index, values, nearest, zero, slinear, quadratic, cubic, barycentric, krogh, polynomial, spline, piecewise_polynomial, from_derivatives, pchip, akima o None. Metodo utilizzato per interpolare i valori NaN.
axis Interpola i valori mancanti lungo la riga (axis = 0) o la colonna (axis = 1)
limit Numero intero. numero massimo di NaN consecutivi da interpolare.
inplace Booleano. Se True, modifica il chiamante DataFrame sul posto
limit_direction forward, backward o both. La direzione lungo NaNs viene interpolata quando viene specificato il limit
limit_area None, inside o outside. Restrizione per l’interpolazione quando è specificato il limit
downcast Dizionario. Specifica il downcast dei tipi di dati
**kwargs Argomenti delle parole chiave per la funzione di interpolazione.

Ritorno

Se inplace è True, un DataFrame interpola tutti i valori NaN utilizzando un metodo dato; altrimenti None.

Codici di esempio: interpola tutti i valori NaN in DataFrame con il metodo 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)

Produzione:

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 tutti i valori NaN in DataFrame utilizzando il metodo di interpolazione lineare.

Questo metodo è più intelligente rispetto a pandas.DataFrame.fillna(), che utilizza un valore fisso per sostituire tutti i valori NaN nel DataFrame.

Codici di esempio: Metodo DataFrame.interpolate() Con il parametro method

Possiamo anche interpolare i valori NaN in DataFrame con diverse tecniche di interpolazione impostando i valori del parametro method nella funzione 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)

Produzione:

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

Questo metodo interpola tutti i valori NaN nel DataFrame utilizzando il metodo di interpolazione polynomial di 2° ordine.

Qui, order=2 è l’argomento della parola chiave per la funzione polynomial.

Codici di esempio: Pandas Metodo DataFrame.interpolate() con il parametro axis per interpolare lungo l’asse 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)

Produzione:

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

Qui, impostiamo axis=1 per interpolare i valori NaN lungo l’asse della riga. Nella seconda riga, il valore NaN viene sostituito utilizzando l’interpolazione lineare lungo la seconda riga.

Tuttavia, nella quarta riga, i valori NaN rimangono anche dopo l’interpolazione, poiché entrambi i valori nella quarta riga sono NaN.

Codici di esempio: Metodo DataFrame.interpolate() con parametro limit

Il parametro limit nel metodo DataFrame.interpolate() limita il numero massimo di valori NaN consecutivi che devono essere riempiti dal metodo.

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)

Produzione:

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

Qui, una volta che un NaN viene riempito in una colonna dall’alto, i successivi valori NaN consecutivi nella stessa colonna rimangono invariati.

Codici di esempio: Metodo DataFrame.interpolate() con parametro limit_direction

Il parametro limit-direction nel metodo DataFrame.interpolate() controlla la direzione lungo un particolare asse, in cui i valori vengono interpolati.

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)

Produzione:

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

Qui, una volta riempito un NaN in una colonna dal basso, i successivi valori NaN consecutivi nella stessa colonna rimangono invariati.

Interpolare i dati delle serie temporali con il metodo 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)

Produzione:

       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

A causa di inplace=True, l’originale DataFrame viene modificato dopo aver chiamato la funzione interpolate().

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Pandas DataFrame