**Контекст:** Daily transactions. Нужно: weekly sums, 7-day moving average.
**Данные:** DataFrame с DatetimeIndex (365 дней) и колонкой `amount`.
**Задание:**
1. Resample W (weekly) с sum.
2. Rolling 7-day mean.
3. Сравни последние 4 недели.
Структура для ориентира — реальные значения из эталонного решения.
import pandas as pd
import numpy as np
np.random.seed(42)
dates = pd.date_range('2025-01-01', '2025-12-31', freq='D')
df = pd.DataFrame({'amount': np.random.uniform(1000, 5000, len(dates))}, index=dates)
# 1. Weekly sum
weekly = df.resample('W')['amount'].sum()
print("Last 6 weeks (weekly sum):")
print(weekly.tail(6).round(0))
# 2. Rolling 7-day
df['ma7'] = df['amount'].rolling(7, min_periods=1).mean()
print("\nLast 10 days with MA7:")
print(df.tail(10).round(0))
# 3. Comparison
recent_4w = df.tail(28)['amount'].sum()
prev_4w = df.iloc[-56:-28]['amount'].sum()
print(f"\nLast 4 weeks: {recent_4w:.0f}")
print(f"Prev 4 weeks: {prev_4w:.0f}")
print(f"Change: {(recent_4w - prev_4w) / prev_4w * 100:+.1f}%")
pandas time-series resample rolling
Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.
Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: pandas, time-series, resample, rolling.
На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 530+ Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.
← Все задания