«Keyerror» при создании стекового графа с помощью matplotlib - PullRequest
0 голосов
/ 10 февраля 2020

Предположим, у меня есть фрейм данных под названием "market", который является полной базой данных моей транзакции. Я сгруппировал его по каждому месяцу и продукту, поэтому получаю сумму продаж (долл. США) для каждого продукта / месяца

test=market.groupby(['Product','Month']).sum()['Sales'].unstack()
test

И результат сверху, как этот

month/product  1   2   3   4   5   6   7   8   9   10   11   12
milk           12  13  12  13  21  21  9   10  15  17   16   20
bread          15  13  13  12  25  24  11  5   13  13   17   14
rice           12  13  15  13  21  21  9   10  19  11   16   25
coffee         12  13  12  16  25  23  11  20  15  14   11   15
tea            15  13  12  13  25  24  11  5   13  8    17   19

Как я можно сделать график с накопленными продажами продукта?

ось x = месяц с накопленными продажами для каждого продукта

ось y = продажи

Что я уже сделал:

Первая попытка:

fig, sumbu = plt.subplots(figsize=(5,3))
graph=test.plot.bar(stacked='True', ax=sumbu)

plt.xlabel('Month', fontsize='12', color='red')
plt.ylabel('Sales', fontsize='12', color='red')
plt.xticks(rotation=45, size=8)
plt.show(graph)

Он работает, но ось X является продуктом (я ожидал месяц)

Вторая попытка:

fig, sumbu = plt.subplots(figsize=(5,3))
graph=test.plot.bar(x='Month', y='Sales', stacked=True, ax=sumbu)

plt.xlabel('Month', fontsize='12', color='red')
plt.ylabel('Sales', fontsize='12', color='red')
plt.xticks(rotation=45, size=8)
plt.show(graph)

"KeyError: 'месяц'

1 Ответ

0 голосов
/ 10 февраля 2020

После проб и ошибок в течение 2 часов я нашел ответ. Вы должны транспонировать свой фрейм данных

test2=test.transpose()

fig, sumbu = plt.subplots(figsize=(5,3))
graph=test2.plot.bar(stacked='True', ax=sumbu)

plt.xlabel('Month', fontsize='12', color='red')
plt.ylabel('Sales', fontsize='12', color='red')
plt.xticks(rotation=45, size=8)
plt.show(graph)
...