гистограмма сгруппированных рядов панд - PullRequest
0 голосов
/ 28 ноября 2018

Привет, есть фрейм данных, который выглядит следующим образом:

ID  Date  Total_Amount  priority
1   2007  4488          High 
2   2007  40981         Low
3   2017  450           Medium
4   2008  1000          Low

каждая строка - это новый человек (ID), а строки показывают, сколько они потратили за год (общая сумма).

Я хочу создать гистограмму с годами по оси X и Total_Amount в качестве высоты по оси Y, но ее нужно сложить по приоритету.например, если в 2007 году было потрачено 10 потраченных денег, а сумма Total_Amount - £ 100 000, то высота бара должна составлять 100 000 с приоритетом (например, 5 могут быть высокими, 4 низкими и 1 средней).

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

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Почти то же самое, что мы все еще используем crosstab

pd.crosstab(index=df.Date,columns=df.priority,values=df.Total_Amount,aggfunc='sum')\
    .fillna(0).plot(kind='bar')
0 голосов
/ 28 ноября 2018

Вы можете использовать groupby(), а затем unstack():

df2 = df.groupby(['Date','priority'])['Total_Amount'].sum().unstack('priority').fillna(0)
df2.plot(kind='bar', stacked=True)

Производит:

enter image description here

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