Pandas DataFrame DataFrame.interpolate() Função

Suraj Joshi 30 janeiro 2023
  1. A sintaxe de pandas.DataFrame.interpolate():
  2. Códigos de exemplo: Interpolar todos os valores NaN em DataFrame com DataFrame.interpolate() Método
  3. Códigos de exemplo: DataFrame.interpolate()Método com o parâmetro method
  4. Códigos de exemplo: Pandas DataFrame.interpolate()Método com o parâmetro axis para interpolar ao longo do eixo row
  5. Códigos de exemplo: DataFrame.interpolate() Método com limit Parâmetro
  6. Códigos de exemplo: DataFrame.interpolate() Método com limit_direction Parâmetro
  7. Interpolar dados da série temporal com DataFrame.interpolate() Método
Pandas DataFrame DataFrame.interpolate() Função

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 avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Pandas DataFrame