Гистограмма с накоплением по десятилетиям из данных - PullRequest
2 голосов
/ 16 октября 2019

У меня есть дата-фрейм, который содержит дату снежной бури, а также рейтинг этой снежной бури, начиная с 1950-2019 гг. Я хочу создать гистограмму с накоплением, где ось X - это десятилетие, а ось Y - количество метелей по категориям.

Пример того, что я пытаюсь создать, приведен ниже. Snowstorm climatology

У меня возникают проблемы с пониманием того, как именно агрегировать данные таким образом, чтобы я мог построить что-то похожее на общее.

Например,Вот фрагмент данных 1950-х годов:

    Start       End         Category    Year    count
    1959-03-12  1959-03-14  2           1950    13
    1958-03-18  1958-03-23  3           1950    6
    1958-02-12  1958-02-18  3           1950    6
    1957-12-03  1957-12-05  1           1950    32
    1956-03-18  1956-03-20  1           1950    32

У меня есть все подсчеты для каждой категории, но как мне превратить это в данные, которые можно построить на гистограмме с накоплением?

1 Ответ

2 голосов
/ 16 октября 2019

Сначала агрегируйте ваши данные, затем строите график с аргументом stacked=True

pivot_table

df.pivot_table('count', 'Year', 'Category', 'sum').plot.bar(stacked=True)

groupby

df.groupby(['Year', 'Category'])['count'].sum().unstack().plot.bar(stacked=True)

enter image description here

Имейте в виду, что вы можете изменить агрегацию на что-то другое.

df.pivot_table('count', 'Year', 'Category', 'first').plot.bar(stacked=True)
df.groupby(['Year', 'Category'])['count'].first().unstack().plot.bar(stacked=True)

Кроме того, вы можете отбросить дубликаты до.

(
    df.drop_duplicates(['Year', 'Category'])
      .pivot_table('count', 'Year', 'Category')
      .plot.bar(stacked=True)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...