Метод interpolate
Метод interpolate применяется к DataFrame
и заполняет пропущенные значения NaN с использованием
интерполяции. По умолчанию используется линейная интерполяция.
Метод полезен для восстановления пропусков в числовых данных.
Основной параметр method задаёт способ интерполяции,
например, linear, polynomial или time.
Параметр limit ограничивает количество заполняемых
пропусков, а axis определяет направление - по строкам
или по столбцам.
Синтаксис
df.interpolate(method='linear', axis=0, limit=None, inplace=False)
Пример
Базовый пример линейной интерполяции для пропущенных значений:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, 3, 4, 5],
'b': [10, 20, np.nan, 40, 50]
})
res = df.interpolate()
print(res)
Результат выполнения кода:
a b
0 1.0 10.0
1 2.0 20.0
2 3.0 30.0
3 4.0 40.0
4 5.0 50.0
Пример
Интерполяция по столбцам с использованием параметра axis:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 2, np.nan],
'b': [10, np.nan, 30]
})
res = df.interpolate(axis=1)
print(res)
Результат выполнения кода:
a b
0 1.0 10.0
1 2.0 20.0
2 NaN 30.0
Пример
Использование параметра limit для ограничения количества
заполняемых пропусков:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, np.nan, 4, 5],
'b': [10, 20, np.nan, np.nan, 50]
})
res = df.interpolate(limit=1)
print(res)
Результат выполнения кода:
a b
0 1.0 10.0
1 2.0 20.0
2 NaN 30.0
3 4.0 NaN
4 5.0 50.0
Пример
Интерполяция с использованием полиномиального метода
(требуется указать порядок order):
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, 3, np.nan, 5],
'b': [5, 10, np.nan, 30, np.nan]
})
res = df.interpolate(method='polynomial', order=2)
print(res)
Результат выполнения кода:
a b
0 1.0 5.0
1 2.0 10.0
2 3.0 20.0
3 4.0 30.0
4 5.0 35.0