Pandas DataFrame Funzione DataFrame.interpolate()
-
Sintassi di
pandas.DataFrame.interpolate(): -
Codici di esempio: interpola tutti i valori
NaNinDataFramecon il metodoDataFrame.interpolate() -
Codici di esempio: Metodo
DataFrame.interpolate()Con il parametromethod -
Codici di esempio: Pandas Metodo
DataFrame.interpolate()con il parametroaxisper interpolare lungo l’asserow -
Codici di esempio: Metodo
DataFrame.interpolate()con parametrolimit -
Codici di esempio: Metodo
DataFrame.interpolate()con parametrolimit_direction -
Interpolare i dati delle serie temporali con il metodo
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().
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn