Панель стека matplotlib, сгруппированная по дате (месяц и год) - PullRequest
0 голосов
/ 10 октября 2018

Рассмотрим упрощенный фрейм данных, который имеет 2 столбца: Даты и Значения.

dates = pd.DatetimeIndex(['2017-01-01 00:00:00', '2017-01-05 02:00:00','2017-03-01 02:00:00', '2018-01-01 03:00:00', '2018-01-21 04:00:00','2018-03-01 03:00:00', '2018-03-22 04:00:00'], dtype='datetime64[ns]')
my_df = pd.DataFrame({"Date":dates,"Values":[5,1,2,4,6,3,5]})
my_df

enter image description here

Моя цель состоит в том, чтобы построить стековый бар таким образом, чтобы у x_axis был month_year ибар покажет стопку значений.Например, в январе-2017 году я ожидаю увидеть 2 цвета с 5 и 1 суммой до 6 и так далее.

Так как это проблема, связанная с group_date, мне было интересно, как получить список значений на основе месяца и года, чтобы я мог правильно их сложить вместе, а затем иметь цикл for, такой что:

for each month_year:
     plt.bar(month_year, list_of_values_per_month_year, color='#whatever',)

Обратите внимание, что не каждый месяц имеет значение, а некоторые месяцы имеют n значений.

Если, конечно, мой подход не является принципиально сложным, и есть более плавный способ сделать это.

1 Ответ

0 голосов
/ 10 октября 2018

Сначала необходимо создать таблицу pivot, затем plot панель стека

my_df.Date=my_df.Date.dt.strftime('%Y-%m')
my_df['col']=my_df.groupby('Date').cumcount()
my_df.pivot(index='Date',columns='col',values='Values').plot(kind='bar',stacked=True)

enter image description here

...