Оконные функции в Pandas: rolling, expanding, ewm

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

pandasоконные функцииrolling

Оконные функции в Pandas помогают анализировать данные во времени: сглаживать шум, считать накопительные метрики и учитывать «вес» последних наблюдений. Это базовый инструмент для аналитики, финтеха, мониторинга и ML-preprocessing.

rolling() — скользящее окно

Используется, когда нужно считать метрику по фиксированному числу последних строк или по временному интервалу.

Примеры задач:

  • скользящее среднее продаж
  • локальная волатильность
  • минимум/максимум за последние N дней
df['ma_7'] = df['sales'].rolling(7).mean()
df['std_7'] = df['sales'].rolling(7).std()

Если индекс — дата, можно использовать временное окно:

df['ma_30d'] = df['sales'].rolling('30D').mean()

Важно:

  • первые значения будут NaN, пока окно не заполнится
  • параметр min_periods позволяет считать раньше
  • center=True центрирует окно относительно текущей точки

expanding() — накопительное окно

Считает метрику от начала ряда до текущей строки. Подходит для cumulative-аналитики.

df['cum_avg'] = df['sales'].expanding().mean()
df['cum_max'] = df['sales'].expanding().max()

Когда полезно:

  • накопительное среднее
  • контроль стабильности метрики
  • анализ роста показателя с начала периода 📈

ewm() — экспоненциально взвешенное окно

Придает больший вес свежим данным и меньший — старым. Это особенно полезно, когда последние изменения важнее исторических.

df['ema'] = df['sales'].ewm(span=7).mean()

Где применяется:

  • EMA в финансовом анализе
  • сглаживание временных рядов
  • чувствительные к тренду метрики

Ключевые параметры:

  • span — популярный способ задать «ширину» окна
  • alpha — коэффициент сглаживания
  • adjust=False — часто используют для более «практического» поведения EMA

Что выбрать? 🤔

  • rolling — если нужен анализ по фиксированному окну
  • expanding — если важна динамика от начала наблюдений
  • ewm — если приоритет у последних значений

Типичные ошибки ⚠️

  • использовать rolling() на неотсортированных данных
  • забывать про NaN в начале ряда
  • смешивать оконный расчет по строкам и по времени
  • применять ewm() без понимания, как span влияет на чувствительность

Мини-шпаргалка

# Скользящее среднее
df['x'].rolling(5).mean()

# Накопительная сумма
df['x'].expanding().sum()

# Экспоненциальное сглаживание
df['x'].ewm(span=10).mean()

Оконные функции в Pandas — это простой способ превратить «сырые» временные данные в понятные сигналы для анализа, отчетности и моделей. 🧠

Подборку каналов про IT — с Python, data analytics, backend и engineering practice — стоит сохранить отдельно в закладки.

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же