wangalex

Untitled

Dec 8th, 2019
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. # !/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. import dash
  4. import dash_core_components as dcc
  5. import dash_html_components as html
  6. import plotly.graph_objs as go
  7. import pandas as pd
  8. #задаем данные для отрисовки
  9. from sqlalchemy import create_engine
  10. # пример подключения к базе данных для Postresql
  11. # db_config = {'user': 'my_user',
  12. # 'pwd': 'my_user_password',
  13. # 'host': 'localhost',
  14. # 'port': 5432,
  15. # 'db': 'games'}
  16. # engine = create_engine('postgresql://{}:{}@{}:{}/{}'.format(db_config['user'],
  17. # db_config['pwd'],
  18. # db_config['host'],
  19. # db_config['port'],
  20. # db_config['db']))
  21. # пример подключения к базе данных для Sqlite
  22. engine = create_engine('sqlite:////db/games.db', echo = False)
  23. # получаем сырые данные
  24. query = ''' SELECT *
  25. FROM data_raw
  26. '''
  27. games_raw = pd.io.sql.read_sql(query, con = engine)
  28. # формируем данные для отчета
  29. games_grouped = (games_raw.groupby(['genre', 'year_of_release'])
  30. .agg({'name':'count'})
  31. .reset_index()
  32. .rename(columns = {'name':'Games Released'})
  33. )
  34. # формируем графики для отрисовки
  35. data_games_by_year = []
  36. for genre in games_grouped['genre'].unique():
  37. current = games_grouped.query('genre == @genre')
  38. #data_games_by_year += [current]
  39. data_games_by_year += [current[['year_of_release', 'Games Released']]]
  40. # задаем лейаут
  41. external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
  42. app = dash.Dash(__name__, external_stylesheets=external_stylesheets,compress=False)
  43. app.layout = html.Div(children=[
  44.  
  45. # формируем html
  46. html.H1(children = 'Выпуск игр по годам'),
  47. dcc.Graph(
  48. figure = {'data': data_games_by_year,
  49. 'layout': go.Layout(xaxis = {'title': 'Год'},
  50. yaxis = {'title': 'Выпущенные игры'})
  51. },
  52. id = 'games_by_year'
  53. ),
  54.  
  55. ])
  56. # описываем логику дашборда
  57. if __name__ == '__main__':
  58. app.run_server(host='0.0.0.0', port=3000)
Add Comment
Please, Sign In to add comment