pandasВременные рядыMediumБесплатно~10 мин

Rolling 7д mean — пик в ноябре

// Условие

Таблица df: дневная выручка за 2024 год.

Шаг 1
Добавь колонку rolling_7d — скользящее среднее за 7 дней для revenue (используй min_periods=1, чтобы первые 6 дней не были NaN).
Шаг 2
Найди день в ноябре 2024, когда rolling_7d был максимальным. Верни в result словарь:
{'date': <Timestamp>, 'rolling_7d': <float>}

// Данные

df: date (datetime), revenue (float)
▶ Решить в pandas-тренажёре

// Решение

Подсказка

Rolling: df['rolling_7d'] = df['revenue'].rolling(7, min_periods=1).mean(). Перед этим убедись, что df отсортирован по дате (он уже отсортирован).

Фильтр по ноябрю: nov = df[df['date'].dt.month == 11].

Найти строку с максимумом: idx = nov['rolling_7d'].idxmax(), потом df.loc[idx] вернёт нужную строку. Из неё собери dict.

Сначала попробуй сам → Показать решение
df = load_data()

# Шаг 1: rolling 7-дневное среднее
df['rolling_7d'] = df['revenue'].rolling(7, min_periods=1).mean()

# Шаг 2: пик внутри ноября
nov = df[df['date'].dt.month == 11]
idx = nov['rolling_7d'].idxmax()

result = {
    'date': df.loc[idx, 'date'],
    'rolling_7d': float(df.loc[idx, 'rolling_7d']),
}
print(result)
.rolling(N).mean() — стандартный сглаживатель шума. min_periods=1 важен, иначе первые N-1 дней будут NaN. Альтернативы: .expanding() для накопительного среднего; .ewm() для экспоненциального. idxmax() возвращает индекс — а .argmax() номер позиции.

// Похожие задачи