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

Метод rolling

Метод rolling применяется к DataFrame и возвращает объект Rolling, который позволяет выполнять агрегацию по скользящему окну. Основной параметр window задаёт размер окна в количестве строк. Метод часто используют для сглаживания временных рядов и расчёта скользящих средних.

Дополнительные параметры управляют поведением окна: min_periods определяет минимальное количество значений в окне для расчёта, center смещает окно так, чтобы текущая строка была в центре, а win_type задаёт тип весового окна.

Синтаксис

df.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)

Пример

Давайте создадим таблицу и вычислим скользящее среднее по окну из трёх строк:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [10, 20, 30, 40, 50] }) res = df.rolling(window=3).mean() print(res)

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

a b 0 NaN NaN 1 NaN NaN 2 2.0 20.0 3 3.0 30.0 4 4.0 40.0

Пример

Вторым параметром можно задать минимальное количество значений, необходимых для вычислений. Например, установим 2, тогда первые две строки будут иметь значения, а первая останется пустой:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [10, 20, 30, 40, 50] }) res = df.rolling(window=3, min_periods=2).mean() print(res)

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

a b 0 NaN NaN 1 1.5 15.0 2 2.0 20.0 3 3.0 30.0 4 4.0 40.0

Пример

С помощью параметра center можно сместить окно так, чтобы текущая строка оказалась в центре. Это часто используют для центрированных скользящих средних:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [10, 20, 30, 40, 50] }) res = df.rolling(window=3, center=True).mean() print(res)

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

a b 0 NaN NaN 1 2.0 20.0 2 3.0 30.0 3 4.0 40.0 4 NaN NaN

Пример

Метод rolling можно использовать с разными агрегирующими функциями, например, суммой или стандартным отклонением:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [10, 20, 30, 40, 50] }) res_sum = df.rolling(window=2).sum() res_std = df.rolling(window=3).std() print("Sum:\n", res_sum) print("Std:\n", res_std)

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

Sum: a b 0 NaN NaN 1 3.0 30.0 2 5.0 50.0 3 7.0 70.0 4 9.0 90.0 Std: a b 0 NaN NaN 1 NaN NaN 2 1.000000 10.000000 3 1.000000 10.000000 4 1.000000 10.000000

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

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