Как можно построить значения в списке словарей? - PullRequest
1 голос
/ 04 мая 2020

Я пытаюсь построить две линии (одну для дохода и другую для дохода) на графике matplotlib. К сожалению, у меня проблемы с этим. Я получаю сообщение об ошибке: AttributeError: 'list' object has no attribute 'keys'

Вот данные словаря:

[{'date': '2Q2019', 'revenue': 53809000000, 'earnings': 10044000000}, {'date': '3Q2019', 'revenue': 64040000000, 'earnings': 13686000000}, {'date': '4Q2019', 'revenue': 91819000000, 'earnings': 22236000000}, {'date': '1Q2020', 'revenue': 58313000000, 'earnings': 11249000000}]

А вот мой код:

quarterlyfinaincalEarnings =[{'date': 2016, 'revenue': 215639000000, 'earnings': 45687000000}, {'date': 2017, 'revenue': 229234000000, 'earnings': 48351000000}, {'date': 2018, 'revenue': 265595000000, 'earnings': 59531000000}, {'date': 2019, 'revenue': 260174000000, 'earnings': 55256000000}]

names = list(quarterlyfinaincalEarnings.keys())
values = list(quarterlyfinaincalEarnings.values())

plt.bar(range(len(quarterlyfinaincalEarnings)),values,tick_label=names)
plt.show()

Любое руководство будет с благодарностью ,

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Использование pandas

  • Ваши данные имеют значение list из dicts
  • Преобразование ваших данных в информационный фрейм, а затем построение графика
import pandas as pd
import matplotlib.pyplot as plt

# data
data = [{'date': '2Q2019', 'revenue': 53809000000, 'earnings': 10044000000},
        {'date': '3Q2019', 'revenue': 64040000000, 'earnings': 13686000000},
        {'date': '4Q2019', 'revenue': 91819000000, 'earnings': 22236000000},
        {'date': '1Q2020', 'revenue': 58313000000, 'earnings': 11249000000}]

# create dataframe
df = pd.DataFrame(data)

# split date into quarters and years
df['quarter'], df['year'] = df.date.str[:2], df.date.str[-4:]

print(df)

   date      revenue     earnings quarter  year
 2Q2019  53809000000  10044000000      2Q  2019
 3Q2019  64040000000  13686000000      3Q  2019
 4Q2019  91819000000  22236000000      4Q  2019
 1Q2020  58313000000  11249000000      1Q  2020

# plot the dataframe
df.plot('year', ['revenue', 'earnings'])
plt.show()

enter image description here

1 голос
/ 04 мая 2020
#use print statements to understand the type of variables

aa=[{'date': '2Q2019', 'revenue': 53809000000, 'earnings': 10044000000}, 
    {'date': '3Q2019', 'revenue': 64040000000, 'earnings': 13686000000}, 
    {'date': '4Q2019', 'revenue': 91819000000, 'earnings': 22236000000}, 
    {'date': '1Q2020', 'revenue': 58313000000, 'earnings': 11249000000}]
print(type(aa))

for a in aa:
    print(type(a))
    print(a, a['date'],a['revenue'],a['earnings'])

вывод:

<class 'list'>
<class 'dict'>
{'date': '2Q2019', 'revenue': 53809000000, 'earnings': 10044000000} 2Q2019 53809000000 10044000000
<class 'dict'>
{'date': '3Q2019', 'revenue': 64040000000, 'earnings': 13686000000} 3Q2019 64040000000 13686000000
<class 'dict'>
{'date': '4Q2019', 'revenue': 91819000000, 'earnings': 22236000000} 4Q2019 91819000000 22236000000
<class 'dict'>
{'date': '1Q2020', 'revenue': 58313000000, 'earnings': 11249000000} 1Q2020 58313000000 11249000000   

черчение

aa=[{'date': '2Q2019', 'revenue': 53809000000, 'earnings': 10044000000}, 
{'date': '3Q2019', 'revenue': 64040000000, 'earnings': 13686000000}, 
{'date': '4Q2019', 'revenue': 91819000000, 'earnings': 22236000000}, 
{'date': '1Q2020', 'revenue': 58313000000, 'earnings': 11249000000}]


dates,revs,earns=[],[],[]  
for a in aa:
    dates.append(a['date'])
    revs.append(a['revenue'])
    earns.append(a['earnings'])



import matplotlib.pyplot as p
p.plot(dates,revs,label='revenues')
p.plot(dates,earns,label='earnings')
p.legend()

enter image description here

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