Подсчет медианы в группах
Есть датафрейм, в котором каждый из курсов "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
