**Данные:** таблица доставок с грязными данными (пропуски, дубли, невалидные типы).
**Задание:** постройте ETL-пайплайн:
1. **Extract:** чтение грязных данных
2. **Transform:** очистка дубликатов, заполнение пропусков, исправление типов, расчёт метрик
3. **Load:** сохранение с отчётом о качестве данных
**Условия:** каждый шаг — отдельная функция, после каждого шага — `assert`-валидация
Структура для ориентира — реальные значения из эталонного решения.
df = pd.DataFrame({
'shipment_id': list(range(n)) + list(range(50)),
'origin': np.random.choice(['Москва', 'СПб', 'Казань', None], n + 50),
'destination': np.random.choice(['Новосибирск', 'Екатеринбург', 'Самара'], n + 50),
'weight_kg': np.concatenate([np.random.uniform(0.5, 50, n),
np.array([-5]*10 + [0]*40)]),
'cost': np.concatenate([np.random.uniform(200, 5000, n),
np.array([None]*50)]),
'created_at': pd.date_range('2024-01-01', periods=n+50, freq='30min'),
'delivered_at': pd.NaT,
})
pandas ETL валидация pipeline data quality
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: pandas, ETL, валидация, pipeline, data quality.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 482 Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.
← Все задания