Pandas DataFrame DataFrame.interpolate() Função
-
A sintaxe de
pandas.DataFrame.interpolate(): -
Códigos de exemplo: Interpolar todos os valores
NaNemDataFramecomDataFrame.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âmetroaxispara interpolar ao longo do eixorow -
Códigos de exemplo:
DataFrame.interpolate()Método comlimitParâmetro -
Códigos de exemplo:
DataFrame.interpolate()Método comlimit_directionParâ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