pandas гистограмма в рамке matplotlib с повторной выборкой даты - PullRequest
1 голос
/ 04 февраля 2020

Я создал фрейм данных с почасовыми данными и тремя столбцами. Это выглядит так:

                           A       B            C
2017-01-01 00:00:00  14417.5900  15252.8700  15252.8700
2017-01-01 01:00:00   1754.4800  14639.5600  14639.5600
2017-01-01 02:00:00     64.2600     14.7900     14.7900
2017-01-01 03:00:00     50.5789    486.8810    486.8810
2017-01-01 04:00:00      7.2784      8.6431      8.6431
2017-01-01 05:00:00    444.1068     28.7847     28.7847

Я хотел бы создать гистограмму, где сравнивайте в месячном масштабе модели A, B и C. Как следствие, я агрегировал данные как:

df = df.resample('M').sum() 

На данный момент я застрял. Я пробовал обе pandas функции, такие как

df = df.resample('M').sum().hist()

Однако я получаю три разные цифры. Кроме того, я хотел бы перейти на платформу matplotlib, где я могу персонализировать результаты.

Любые предложения приветствуются.

Действительно, большое спасибо

Ответы [ 2 ]

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

Вот как я справляюсь с проблемой:

 bar_width = 0.2
 x = np.arange(12)

 y1 = df1.loc[:,'A'].values[:]
 y2 = df1.loc[:,'B'].values[:]
 y3 = df1.loc[:,'C'].values[:]

 plt.bar(x,             y1, bar_width,color=colf[0], label=labf[0])
 plt.bar(x+bar_width,   y2, bar_width,color=colf[1], label=labf[1])
 plt.bar(x+2*bar_width, y3, bar_width,color=colf[2], label=labf[2])

после этого,

   x_ticklabels = [r'\textbf{Jan}', r'\textbf{Feb}', r'\textbf{Mar}',r'\textbf{Apr}',
                    r'\textbf{May}', r'\textbf{Jun}', r'\textbf{Jul}',r'\textbf{Ago}',
                    r'\textbf{Sep}', r'\textbf{Oct}', r'\textbf{Nov}',r'\textbf{Dec}']

plt.xticks(x, x_ticklabels, rotation=30)

Несмотря на то, что это не очень общий характер, по крайней мере, на мой взгляд, результат довольно хороший.

enter image description here

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

Я думаю, что вы хотите DataFrame.plot с kind = 'bar':

df.resample('M').sum().plot(kind = 'bar')

или DataFrame.plot.bar

df.resample('M').sum().plot.bar()

enter image description here

Мы также можем использовать:

df.groupby([df.index.month,df.index.year]).sum().plot.bar()

enter image description here

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