РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
602 of 687 menu

Метод apply аксессора rolling

Метод apply аксессора rolling применяет пользовательскую функцию к каждому скользящему окну. В отличие от встроенных методов, таких как mean или sum, apply позволяет выполнять произвольные вычисления. Первым параметром передаётся функция, которая принимает массив значений окна и возвращает скалярный результат. Вторым параметром можно указать raw (булево значение): если False, функция получает Series; если True - массив numpy. Параметр engine определяет движок выполнения ('cython' или 'numba'), а engine_kwargs позволяет передать дополнительные аргументы движку. Метод возвращает Series или DataFrame той же длины, что и исходный объект.

Синтаксис

rolling_object.apply(func, raw=False, engine=None, engine_kwargs=None)

Пример

Применим пользовательскую функцию для вычисления среднего арифметического с условием (игнорируем отрицательные значения):

import pandas as pd ser = pd.Series([1, -2, 3, -4, 5]) res = ser.rolling(3).apply(lambda x: x[x > 0].mean()) print(res)

Результат выполнения кода:

0 NaN 1 NaN 2 2.0 3 3.0 4 4.0 dtype: float64

Пример

Используем функцию с параметром raw=True для работы с массивом NumPy. Вычислим размах (максимум минус минимум) в каждом окне:

import pandas as pd ser = pd.Series([5, 1, 8, 3, 9]) res = ser.rolling(3).apply(lambda x: x.max() - x.min(), raw=True) print(res)

Результат выполнения кода:

0 NaN 1 NaN 2 7.0 3 7.0 4 6.0 dtype: float64

Пример

Применим пользовательскую функцию к DataFrame. Вычислим среднее геометрическое для каждого скользящего окна:

import pandas as pd import numpy as np df = pd.DataFrame({ 'a': [1, 4, 9, 16, 25], 'b': [2, 8, 18, 32, 50] }) res = df.rolling(2).apply(lambda x: np.exp(np.log(x).mean())) print(res)

Результат выполнения кода:

a b 0 NaN NaN 1 2.0 4.0 2 6.0 12.0 3 12.0 24.0 4 20.0 40.0

Смотрите также

  • метод mean,
    который вычисляет среднее значение в скользящем окне
  • метод agg,
    который применяет несколько агрегирующих функций одновременно
  • метод sum,
    который вычисляет сумму значений в скользящем окне
  • метод std,
    который вычисляет стандартное отклонение в скользящем окне
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить