Pandas DataFrame DataFrame.interpolate() Função
-
A sintaxe de
pandas.DataFrame.interpolate()
: -
Códigos de exemplo: Interpolar todos os valores
NaN
emDataFrame
comDataFrame.interpolate()
Método -
Códigos de exemplo:
DataFrame.interpolate()
Método com o parâmetromethod
-
Códigos de exemplo: Pandas
DataFrame.interpolate()
Método com o parâmetroaxis
para interpolar ao longo do eixorow
-
Códigos de exemplo:
DataFrame.interpolate()
Método comlimit
Parâmetro -
Códigos de exemplo:
DataFrame.interpolate()
Método comlimit_direction
Parâmetro -
Interpolar dados da série temporal com
DataFrame.interpolate()
Método
A função Python Pandas DataFrame.interpolate()
preenche valores ‘NaN’ no DataFrame utilizando a técnica de interpolação.
A sintaxe 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 ou None . Método utilizado para interpolar valores NaN . |
axis |
Interpolar valores em falta ao longo da linha (axis=0) ou coluna (axis=1) |
limit |
Número inteiro. número máximo de NaNs consecutivos a serem interpolados. |
inplace |
Booleano. Se True , modificar no local o autor da chamada DataFrame . |
limit_direction |
forward , backward ou both . A direcção ao longo de NaNs é interpolada quando o limit é especificado. |
limit_area |
None , inside , ou outside . Restrição para a interpolação quando o limit é especificado |
downcast |
Dicionário. Especifica o downcast dos tipos de dados |
**kwargs |
Argumentos de palavras-chave para a função de interpolação. |
Devolver
Se inplace
for True
, um DataFrame
interpola todos os valores NaN
utilizando um dado method
; caso contrário, None
.
Códigos de exemplo: Interpolar todos os valores NaN
em DataFrame
com DataFrame.interpolate()
Método
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)
Resultado:
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 os valores NaN
em DataFrame
utilizando o método de interpolação linear
.
Este método é mais inteligente em comparação com pandas.DataFrame.fillna()
, que utiliza um valor fixo para substituir todos os valores NaN
no DataFrame.
Códigos de exemplo: DataFrame.interpolate()
Método com o parâmetro method
Também podemos interpolar valores NaN
em DataFrame
com diferentes técnicas de interpolação definindo valores do parâmetro method
em DataFrame.interpolate()
função.
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)
Resultado:
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 os valores NaN
no parâmetro DataFrame
utilizando o método de interpolação polinomial
de segunda ordem.
Aqui, order=2
é o argumento da palavra-chave para a função polinomial
.
Códigos de exemplo: Pandas DataFrame.interpolate()
Método com o parâmetro axis
para interpolar ao longo do eixo 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)
Resultado:
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
Aqui, definimos axis=1
para interpolar os valores NaN
ao longo do eixo da linha. Na 2ª fila, o valor NaN
é substituído utilizando a interpolação linear ao longo da 2ª fila.
No entanto, na 4ª linha, os valores NaN
permanecem mesmo após a interpolação, pois ambos os valores na 4ª linha são NaN
.
Códigos de exemplo: DataFrame.interpolate()
Método com limit
Parâmetro
O parâmetro limit
em DataFrame.interpolate()
método restringe o número máximo de valores consecutivos NaN
a serem preenchidos pelo 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)
Resultado:
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
Aqui, uma vez preenchido um NaN
numa coluna a partir do topo, os próximos valores consecutivos de NaN
na mesma coluna permanecem inalterados.
Códigos de exemplo: DataFrame.interpolate()
Método com limit_direction
Parâmetro
O parâmetro limit-direction
em DataFrame.interpolate()
método controla a direcção ao longo de um determinado eixo, no qual os valores são interpolados.
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)
Resultado:
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
Aqui, uma vez preenchido um NaN
numa coluna a partir do fundo, os próximos valores consecutivos de NaN
na mesma coluna permanecem inalterados.
Interpolar dados da série temporal com DataFrame.interpolate()
Método
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)
Resultado:
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
Devido a inplace=True
, o DataFrame
original é modificado após chamar a função interpolate()
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn