Advertisement
AnnaCh1971

Создание графиков в dash задача 4 /7

Mar 15th, 2023
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.86 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import dash
  5. import dash_core_components as dcc
  6. import dash_html_components as html
  7.  
  8. import plotly.graph_objs as go
  9.  
  10. import pandas as pd
  11.  
  12. # задаём данные для отрисовки
  13. from sqlalchemy import create_engine
  14.  
  15. # пример подключения к базе данных для Postresql
  16. #db_config = {'user': 'my_user',
  17. #             'pwd': 'my_user_password',
  18. #             'host': 'localhost',
  19. #             'port': 5432,
  20. #             'db': 'games'}
  21. #engine = create_engine('postgresql://{}:{}@{}:{}/{}'.format(db_config['user'],
  22. #                                                            db_config['pwd'],
  23. #                                                            db_config['host'],
  24. #                                                            db_config['port'],
  25. #                                                            db_config['db']))
  26. # пример подключения к базе данных для Sqlite
  27. engine = create_engine('sqlite:////db/games.db', echo = False)
  28.  
  29. # получаем сырые данные
  30. query = '''
  31.            SELECT * FROM data_raw
  32.        '''
  33. games_raw = pd.io.sql.read_sql(query, con = engine)
  34.  
  35. # формируем данные для отчёта
  36. games_grouped = (games_raw.groupby(['genre'])
  37.                           .agg({'name': 'nunique'})
  38.                           .rename(columns = {'name': 'games_launched'})
  39.                           .reset_index()
  40.                 )
  41. games_grouped = games_grouped.sort_values(by = ['games_launched'], ascending = 'False') # напишите код
  42.  
  43. # формируем подписи
  44. games_grouped['label'] = games_grouped.apply(lambda x: '{} игр'.format(x['games_launched']), axis = 1)
  45.  
  46. # формируем графики для отрисовки
  47. data = [go.Bar(x = games_grouped['genre'],
  48.                y = games_grouped['games_launched'],
  49.                text = games_grouped['label'], # напишите код
  50.                textposition = 'auto',              
  51.                name = 'games_launched')]
  52.  
  53. # задаём лейаут
  54. external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
  55. app = dash.Dash(__name__, external_stylesheets=external_stylesheets,compress=False)
  56. app.layout = html.Div(children=[  
  57.    
  58.     # формируем заголовок тегом HTML
  59.     html.H1(children = 'Выпуск игр по жанрам'),
  60.  
  61.     dcc.Graph(
  62.         figure = {'data': data,
  63.                   'layout': go.Layout(xaxis = {'title': 'Жанр'},
  64.                                       yaxis = {'title': 'Выпущенные игры'})
  65.                  },
  66.         id = 'launches_by_genre' # напишите код
  67.     ),        
  68.  
  69. ])
  70.  
  71. # описываем логику дашборда
  72. if __name__ == '__main__':
  73.     app.run_server(host='0.0.0.0', port=3000)
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement