Как построить панд сгруппированных значений, используя Pygal? - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть CSV, как это:

name,version,color
AA,"version 1",yellow
BB,"version 2",black
CC,"version 3",yellow
DD,"version 1",black
AA,"version 1",green
BB,"version 2",green
FF,"version 3",green
GG,"version 3",red
BB,"version 3",yellow
BB,"version 2",red
BB,"version 1",black

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

Это должно выглядеть примерно так:

enter image description here

Что я пробовал до сих пор:

df = pd.read_csv(results)

new_df = df.groupby('version')['color'].value_counts()

bar_chart = pygal.Bar(width=1000, height=600,
                            legend_at_bottom=True, human_readable=True,
                            title='versions vs colors',
                            x_title='Version',
                            y_title='Number')
versions = []    

for index, row in new_df.iteritems():
    versions.append(index[0])
    bar_chart.add(index[1], row)

bar_chart.x_labels = map(str, versions)

bar_chart.render_to_file('bar-chart.svg')

К сожалению, он не работает и не может сопоставить группу цветов для правильной версии.

Я также пытался использовать matplotlib.pyplot, и он работает как шарм:

pd.crosstab(df['version'],df['color']).plot.bar(ax=ax)
plt.draw() 

Это также работает:

df.groupby(['version','color']).size().unstack(fill_value=0).plot.bar()

Но сгенерированный график не является точнымдостаточно для меня.Я хотел бы иметь диаграмму Pygal.

Я также проверил:
Как отобразить значения групповых панд на графике?
Как построить график данных панд?

...