Melt + pivot: преобразование данных опроса в long → wide → average

Hard pandas pandas (очистка) VK

Условие задачи

Дано: DataFrame `survey` (wide format) с колонками user_id, q1_score, q2_score, q3_score, q4_score (опрос NPS из 4 вопросов, оценки 1-10) — 6 респондентов. Посчитайте средний балл по каждому вопросу опроса. Верните DataFrame с колонками question (имена q1, q2, q3, q4 без суффикса _score), avg_score (1 знак), отсортированный по avg_score по убыванию.

Темы

melt reshape groupby

Подсказки

Что проверяет эта задача

Задача «Melt + pivot: преобразование данных опроса в long → wide → average» учит обрабатывать табличные данные в pandas как аналитик. Такие задачи дают на собеседованиях в VK и других IT-компаниях. Уровень сложный — проверяет глубину и умение собрать решение из нескольких приёмов.

Как подступиться к решению

Сначала разбери условие и формат входа-выхода, прикинь крайние случаи (пустой ввод, дубли, NaN). Затем выбери структуру данных и собери решение по шагам — начни с простого рабочего варианта, потом оптимизируй сложность. Код пишешь и запускаешь прямо в браузере: Python-тренажёр исполняет его через Pyodide (pandas, numpy, scipy) и проверяет результат автоматически.

В pandas один и тот же результат часто достаётся разными путями — через groupby, pivot_table, merge или векторные операции над колонками. Важно выбрать читаемый и быстрый: встроенные векторные методы почти всегда обгоняют циклы и построчный apply. На собеседовании ценят не только правильный ответ, но и то, как ты объясняешь выбор подхода, обрабатываешь пропуски (NaN) и оцениваешь, что будет на больших данных.

Разобраться в pandas системно — бесплатный курс «Pandas с нуля» и гайды по pandas.

Открыть задачу в тренажёре → ← Все Python-задачи