Хочу сделать диаграмму распределения по классам в Pandas

Рейтинг: -4Ответов: 1Опубликовано: 19.05.2023

Хочу сделать диаграмму распределения в Pandas Для этого сделал группировку из датафрейма по 2 столбцамвведите сюда описание изображения

Но мне нужны проценты в каждом классе(Pclass) Поэтому принимаю решение создать еще один столбец с общим количеством людей(count) сгруппированных по классам(Pclass), но получается вот так. И я вообще не понимаю, что происходит, и почему не работает. Можете объяснить, как это работает? введите сюда описание изображения

Ответы

▲ 0Принят

В Вашем решении проблема в том, что df.groupby возвращает серию, в которой индексы - это не сквозной индекс, как в исходном датафрейме, а результаты сгруппированной колонки Pclass. И когда вы присваиваете такую серию своему датафрейму, то он данные присваивает по индексам. Т.е. в 1 индекс записывает результат группировки по значению 1, во 2 индекс записывет результат группировки по значению 2 и, соответственно в 3-й индекс - результат группировки по значению 3. А так как значений 0, 4, 5 в колонке Pclass не существует, то он забивает их NaN. (Попробуйте вывести на экран результат вашего второго groupby перед присвоением, вам станет понятно, о чем я).

Вам надо использовать transform после groupby.

survived_class['count_class'] = survived_class.groupby('Pclass')['count'].transform('sum')