№5

From Beige Hog, 1 Year ago, written in Plain Text, viewed 204 times.
URL http://codebin.org/view/c7c12047 Embed
Download Paste or View Raw
  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. games_grouped = (games_raw.groupby('platform')
  36.                  .agg({'name': 'nunique'})
  37.                  .reset_index()
  38.                  .rename(columns={'name': 'games_launched'})
  39.                  .sort_values(by='games_launched', ascending=False)
  40.                  .head(10))
  41.  
  42. # формируем графики для отрисовки
  43. data = [go.Pie(labels=games_grouped['platform'],
  44.                values=games_grouped['games_launched'],
  45.                name='pie')]
  46.  
  47. # задаём лейаут
  48. external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
  49. app = dash.Dash(__name__, external_stylesheets=external_stylesheets, compress=False)
  50. app.layout = html.Div(children=[
  51.  
  52.     # формируем заголовок тегом HTML
  53.     html.H1(children='Выпуск игр по платформам (топ-10)'),
  54.  
  55.     dcc.Graph(
  56.         figure={'data': data,
  57.                 'layout': go.Layout()
  58.                 },
  59.         id='platform_pie'
  60.     ),
  61.  
  62. ])
  63.  
  64. # описываем логику дашборда
  65. if __name__ == '__main__':
  66.     app.run_server(host='0.0.0.0', port=3000)

Reply to "№5"

Here you can reply to the paste above