**Контекст:** вы продуктовый аналитик медиасервиса (стриминг статей и видео). В таблице `events` лежит лог взаимодействий: `user_id`, `event_time` (datetime), `event_type`. Аналитика хочет считать длину и глубину сессий, но в логе нет `session_id`. Бизнес-правило: новая сессия начинается, если пользователь был неактивен 30 минут и более; иначе события продолжают текущую сессию. Сессии не пересекаются между пользователями.
**Задание:**
1. Постройте устойчивый `session_id` (уникальный глобально, не только внутри пользователя) на основе тайм-гэпа в 30 минут.
2. Посчитайте по каждой сессии: число событий, длительность в минутах (от первого до последнего события), `user_id`.
3. Объясните, почему важен порядок сортировки и как `cumsum` по булевой маске порождает идентификатор сессии.
4. Назовите edge cases: один пользователь, одно событие, ровно 30 минут гэпа.
pandas sessionization time-gap cumsum groupby
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: pandas, sessionization, time-gap, cumsum, groupby.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 530+ Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.
← Все задания