Постройте гистограмму с несколькими сериями - PullRequest
1 голос
/ 06 августа 2020

В настоящее время у меня есть три словаря с одинаковыми ключами, но с разными значениями, поскольку они рассчитаны на три разных года. Я пытаюсь провести сравнение между годами. Мне было интересно, как я могу go построить все три графика на одной оси. У меня есть следующий код

import pandas as pd
dt = {'2018':nnum.values, '2019':nnum2.values, '2020':nnum3.values,}
df1=pd.DataFrame(dt,index=nnum.keys())
df1.plot.bar()

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

1 Ответ

1 голос
/ 06 августа 2020

Добавить () для значений, преобразовать в списки в словаре dt для словаря списков:

nnum = {1:4,5:3,7:3}
nnum2 = {7:8,9:1,1:0}
nnum3 = {0:7,4:3,8:5}

dt = {'2018': list(nnum.values()), '2019':list(nnum2.values()), '2020':list(nnum3.values())}
df1=pd.DataFrame(dt,index=nnum.keys())

print(df1)
   2018  2019  2020
1     4     8     7
5     3     1     3
7     3     0     5

df1.plot.bar()

РЕДАКТИРОВАТЬ: если словари другой длины и нужны новые значения, заполненные 0 возможно использование:

nnum = {1:4,5:3,7:3}
nnum2 = {7:8,9:1,1:0}
nnum3 = {0:7,4:3}

from  itertools import zip_longest

L = [list(nnum.values()), list(nnum2.values()), list(nnum3.values())]
L = list(zip_longest(*L, fillvalue=0))
df1 = pd.DataFrame(L,index=nnum.keys(), columns=['2018','2019','2020'])

print(df1)
   2018  2019  2020
1     4     8     7
5     3     1     3
7     3     0     0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...