Метод interpolate
Метод interpolate применяется к Series
и заполняет пропущенные значения (NaN) на основе
существующих данных. По умолчанию используется линейная
интерполяция, которая вычисляет промежуточные значения
между известными точками. Метод полезен для восстановления
пропусков во временных рядах или числовых последовательностях.
Основные параметры: method - способ интерполяции
(по умолчанию 'linear'), limit - максимальное
количество последовательных пропусков для заполнения,
limit_direction - направление заполнения
('forward', 'backward', 'both'), limit_area -
область заполнения ('inside', 'outside').
Синтаксис
ser.interpolate(method='linear', limit=None, limit_direction='forward', limit_area=None)
Пример
Создадим серию с пропущенными значениями и выполним линейную интерполяцию:
import pandas as pd
ser = pd.Series([1, None, 3, None, 5])
res = ser.interpolate()
print(res)
Результат выполнения кода:
0 1.0
1 2.0
2 3.0
3 4.0
4 5.0
dtype: float64
Пример
Используем метод интерполяции 'polynomial' с порядком 2 для более плавной кривой:
import pandas as pd
ser = pd.Series([1, None, 4, None, 9])
res = ser.interpolate(method='polynomial', order=2)
print(res)
Результат выполнения кода:
0 1.0
1 2.5
2 4.0
3 6.5
4 9.0
dtype: float64
Пример
Ограничим количество заполняемых пропусков подряд с помощью параметра limit:
import pandas as pd
ser = pd.Series([1, None, None, None, 5])
res = ser.interpolate(limit=2)
print(res)
Результат выполнения кода:
0 1.0
1 2.0
2 3.0
3 NaN
4 5.0
dtype: float64
Пример
Заполним пропуски в обоих направлениях с помощью limit_direction='both':
import pandas as pd
ser = pd.Series([None, 2, None, 4, None])
res = ser.interpolate(limit_direction='both')
print(res)
Результат выполнения кода:
0 2.0
1 2.0
2 3.0
3 4.0
4 4.0
dtype: float64