GroupBy + transform: % вклад каждой строки в общий по группе

Medium pandas pandas (groupby) Авито

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

Дано: DataFrame `sales` с city, product, revenue — 12 строк. Для каждого товара покажите его долю в выручке города: 1. Все исходные колонки 2. total_by_city -- суммарная выручка города (значение повторяется для всех его строк) 3. pct_of_city -- доля товара в выручке города в процентах (1 знак) Результат отсортирован по city, pct_of_city по убыванию. Сохраните в `result`.

Темы

groupby transform window_function

Подсказки

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

Задача «GroupBy + transform: % вклад каждой строки в общий по группе» учит обрабатывать табличные данные в pandas как аналитик. Такие задачи дают на собеседованиях в Авито и других IT-компаниях. Уровень средний — типичная боевая задача на уверенный Python.

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

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

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

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

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