Сложность группировки диаграмм с использованием Python, Pandas и Matplotlib - PullRequest
1 голос
/ 12 марта 2019

У меня проблемы с получением plot.bar для группировки столбцов так, как я их сгруппировал в кадре данных. Кадр данных возвращает сгруппированные данные правильно, однако гистограмма предоставляет отдельную полосу для каждой строки в кадре данных. В идеале все в моем коде ниже должно группировать по 3-6 столбцов для каждого отдела (в отделе X должны быть столбцы, сгруппированные для каждого типа, а затем счетчик true / false в качестве оси Y).

Dataframe:

dname             Type  purchased
Dept X       0     False        141
                   True         270
             1     False       2020
                   True        2604
             2     False       2023
                   True        1047

Код:

import psycopg2
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

 ##connection and query data removed

df = pd.merge(df_departments[["id", "dname"]], df_widgets[["department", "widgetid", "purchased","Type"]], how='inner', left_on='id', right_on='department')
df.set_index(['dname'], inplace=True)
dx=df.groupby(['dname', 'Type','purchased'])['widgetid'].size()
dx.plot.bar(x='dname', y='widgetid', rot=90)

output from dataframe

1 Ответ

1 голос
/ 12 марта 2019

Я не могу быть уверен без более воспроизводимого примера, но попробуйте unstack перед самым внутренним уровнем MultiIndex dx перед построением графика:

dx.unstack().plot.bar(x='dname', y='widgetid', rot=90)

Я ожидаю, что это сработает, потому что при построении DataFrame каждый столбец становится записью легенды, а каждая строка становится категорией на горизонтальной оси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...