Построение нескольких круговых диаграмм с разными группами строк

У меня есть список заказов на футболки вместе с соответствующим размером, и я хотел бы представить их в виде круговой диаграммы для каждого дизайна, показывающей процент, в котором размер продается больше всего и т. д.

    Design      Total
0   Boba L      9
1   Boba M      4
2   Boba S      2
3   Boba XL     5
4   Burger L    6
5   Burger M    2
6   Burger S    3
7   Burger XL   1
8   Donut L     5
9   Donut M     9
10  Donut S     2
11  Donut XL    5
0
0
388
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Давай groupby.plot.pie:

(df.Design.str.split(expand=True)
   .assign(Total=df['Total'])
   .groupby(0)
   .plot.pie(x=1,y='Total', autopct='%.1f%%')
)

# format the plots
for design, ax in s.iteritems():
    ax.set_title(design)

один из выходов:

Ответ принят как подходящий

Не совсем понятно, о чем вы спрашиваете, но вот моя интерпретация:

df[['Design', 'Size']] = df['Design'].str.rsplit(n=1, expand=True)

fig, ax = plt.subplots(1, 3, figsize=(10,8))
ax = iter(ax)
for t, g in df.groupby('Design'):
    g.set_index('Size')['Total'].plot.pie(ax=next(ax),  autopct='%.2f', title=f'{t}')


Возможно, вы хотите:

df = pd.read_clipboard() #create data from above text no modification
dfplot = df.loc[df.groupby(df['Design'].str.rsplit(n=1).str[0])['Total'].idxmax(), :]

ax = dfplot.set_index('Design')['Total'].plot.pie(autopct='%.2f')
ax.set_ylabel('');

Другие вопросы по теме