Код 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
- Когорта через
groupby("user")["month"].transform("min"). - Таблица через
groupby([...]).nunique().unstack(fill_value=0). - Деление строк:
div(col, axis=0).
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.