Плотный ранг зарплаты внутри отдела (rank dense)

Hard pandas pandas Yandex

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

Дана таблица df с колонками: dept (отдел), name (сотрудник), salary (зарплата, тыс. ₽). Добавь колонку dense_rank — ранг зарплаты сотрудника внутри его отдела: самая высокая зарплата = ранг 1, далее по убыванию. Одинаковые зарплаты получают одинаковый ранг, и при этом ранги не образуют «дыр» (используй плотное ранжирование, method='dense'). Ранг должен быть целым числом (int). Верни таблицу, отсортированную по dept, затем по dense_rank, затем по name. Реализуй f(df).

Темы

pandas rank groupby dense-rank window-function

Подсказки

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

Задача «Плотный ранг зарплаты внутри отдела (rank dense)» учит обрабатывать табличные данные в pandas: фильтрация, группировка, объединение и метрики. Такие задачи дают на собеседованиях в Yandex и других IT-компаниях. Уровень сложный — проверяет глубину и умение собрать решение из нескольких приёмов.

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

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

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

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

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