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)// Решение
Подсказка
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() номер позиции.