Advertisement
Guest User

Untitled

a guest
Aug 28th, 2021
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.89 KB | None | 0 0
  1. def show_statistic_graph(data):
  2.     # data - содержит данные по типу список словарей
  3.     [{'title': 'Чорноморець - Дніпро-1. Без права на осічку. Студія після матчу', 'publishedAt': '2021-07-31T18:58:34Z',   'viewCount': '27761', 'likeCount': '447', 'dislikeCount': '33', 'commentCount': '39', 'link': 'https://www.youtube.com/watch?v=I8iNsBi18xo'}, {'title': 'Чорноморець - Дніпро-1. Огляд матчу / Розгром з шедевром Адамюка', 'publishedAt': '2021-07-31T18:42:16Z', 'viewCount': '222399', 'likeCount': '2944', 'dislikeCount': '128', 'commentCount': '425', 'link': 'https://www.youtube.com/watch?v=kWPA-ESx-5g'}]
  4.     # Это пример данных, количество словарей может достигать до несколько сотень если нужно могу прикрепить реальный список который передается в функцию
  5.     plt.title("ТОП 10 відео по переглядам")
  6.     plt.xlabel('Місце в ТОПі')
  7.     plt.ylabel('Кількість переглядів')
  8.  
  9.     # Дальше я меняю в словарях значения типа str на int, чтобы позже их можно было легко отсортировать.
  10.     # Если кратко, убираю '', Было: 'viewCount': '222399', станет: 'viewCount': 222399.
  11.     for dic in data:
  12.         dic['viewCount'] = int(dic['viewCount'])
  13.         dic['likeCount'] = int(dic['likeCount'])
  14.         dic['dislikeCount'] = int(dic['dislikeCount'])
  15.         dic['commentCount'] = int(dic['commentCount'])
  16.  
  17.  
  18.     # Здесь идёт сортировка словарей за соотвествующим ключем. В нашем случае "viewCount" - просмотры.
  19.     def get_data(x):
  20.         return x['viewCount']
  21.  
  22.     result = sorted(data, key=get_data, reverse=True)
  23.  
  24.     # здесь я делаю список значений котрые достаю из отсортированого списка словарей, ОСТАВЛЯЯ только ТОП 10 по просмотрам.
  25.     # ось Y
  26.     y_count = []
  27.     for y in result[:10]:
  28.         y_count.append(y['viewCount'])
  29.  
  30.     # Здесь вручную вписал значения для оси X
  31.     labels_top = ['Top10', 'Top9', 'Top8', 'Top7', 'Top6', 'Top5', 'Top4', 'Top3', 'Top2', 'Top1']
  32.     y_count.reverse()
  33.  
  34.     # Дальше часть вашего кода, ну и построения графика.
  35.     import pandas as pd
  36.     df = pd.DataFrame({'positions': labels_top, 'values': y_count})
  37.     ax = df.plot.bar(x='positions', y='values', rot=30)
  38.     plt.ticklabel_format(style='plain', axis='y'))
  39.  
  40.     for graph in range(len(result[:10])):
  41.         plt.bar(labels_top.pop(), y_count.pop())
  42.  
  43.     plt.grid()
  44.     plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement