Код Senior pivot, melt и сводные спрашивают часто обновлено

Когортная таблица retention на pandas

Условие

Дан список активностей [user, month], где month целый номер месяца (0, 1, 2...). Когорта пользователя это его первый месяц активности, возраст это month - cohort. Верните словарь {"<cohort>": [r0, r1, ...]}, где rk доля пользователей когорты, активных в возрасте k, округление round(..., 2). Длина списков одинакова для всех когорт и равна максимальному возрасту + 1 (недостающие возрасты 0.0). Ключи когорт строками.

Примеры

retention_table([[1, 0], [1, 1], [2, 0], [2, 2], [3, 1], [3, 2]]) // {"0":[1,0.5,0.5],"1":[1,1,0]}
retention_table([[1, 0]]) // {"0":[1]}
retention_table([[1, 0], [1, 0], [1, 1], [2, 0]]) // {"0":[1,0.5]}

Как подойти

Подсказки: 3
  1. Когорта через groupby("user")["month"].transform("min").
  2. Таблица через groupby([...]).nunique().unstack(fill_value=0).
  3. Деление строк: div(col, axis=0).

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.