Подсчет медианы в группах

Есть датафрейм, в котором каждый из курсов "Title" разбит на модули "module_title". Каждый из модулей "module_title" содержит в себе "lesson_count" уроков.

main.groupby(['title','module_title']).agg(lesson_count = ('lesson_number','max'))

Датасет выглядит следующим образом:

    title      module_title                                     lesson_count
    Excel  Базовый  Визуализация данных Excel                                   5
           Основной функционал Excel                                            11
           Основной функционал Excel (продолжение)                              7
           Сводные таблицы Excel                                                5
           Формулы и функции Excel. Более сложные формулы                       5
    ... ... ...
Руководитель digital-проектов   Решение факапов. Lean/TOC. Обзор.               5
           Требовательность digital-продюсера                                   4
           Управление временем                                                  4
           Управление дизайнерами. Разработка дизайна по scrum                  7
           Экологичный путь менеджера                                           4

Необходимо посчитать медианное "lesson_count" для каждого "Title".

Мой код

main.groupby(['title']).agg(lesson_count_median = ('lesson_number','median'))

дает не совсем то, а именно медиану по множеству номеров уроков для всех модулей "module_title" конкретного курса "Title".

Желаемый результат: в "lesson_cout_median" для "Excel-базовый" должно выводиться 5 (а не 4), а для "Руководитель digital-проектов" - 4 (а не 3) и т.д.

введите сюда описание изображения

Ссылка на датасет.


Ответы (1 шт):

Автор решения: MaxU
df = pd.read_csv("main.csv", sep=";", index_col=0)

res = (df
       .groupby(['title','module_title'])
       ["lesson_number"]
       .nunique()
       .groupby("title")
       .median())

результат:

In [220]: res
Out[220]:
title
Excel Базовый                           5
Java-разработчик                        7
Java-разработчик c нуля                10
JavaScript с нуля                       7
PHP-разработчик с 0 до PRO. Часть 1     4
SMM-маркетолог от А до Я                6
UX-дизайн                               4
Анимация интерфейсов                    3
Веб-вёрстка для начинающих 2.0          7
Веб-дизайн PRO 2.0                      5
Веб-дизайн Базовый                      3
Веб-дизайн с нуля 2.0                   4
Веб-разработчик                         2
Интернет-маркетолог от Ingate           7
Руководитель digital-проектов           5
Name: lesson_number, dtype: int64
→ Ссылка