Advertisement
Kozobars

Untitled

Jan 24th, 2020
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 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. from dash.dependencies import Input, Output
  8.  
  9. import plotly.graph_objs as go
  10.  
  11. from datetime import datetime
  12.  
  13. import pandas as pd
  14.  
  15. # задаём данные для отрисовки
  16. from sqlalchemy import create_engine
  17.  
  18. # Задаём подключение к БД
  19. db_config = {'user': 'my_user',
  20. 'pwd': 'my_user_password',
  21. 'host': 'localhost',
  22. 'port': 5432,
  23. 'db': 'zen'}
  24.  
  25. connection_string = 'postgresql://{}:{}@{}:{}/{}'.format(db_config['user'],
  26. db_config['pwd'],
  27. db_config['host'],
  28. db_config['port'],
  29. db_config['db'])
  30.  
  31. engine = create_engine(connection_string)
  32.  
  33. # получаем сырые данные
  34. query = '''
  35. SELECT * FROM dash_visits
  36. '''
  37. dash_visits = pd.io.sql.read_sql(query, con = engine)
  38. dash_visits['dt'] = pd.to_datetime(dash_visits['dt'])
  39.  
  40. query = '''
  41. SELECT * FROM dash_engagement
  42. '''
  43. dash_engagement = pd.io.sql.read_sql(query, con = engine)
  44. dash_engagement['dt'] = pd.to_datetime(dash_engagement['dt'])
  45.  
  46. note = '''
  47. Этот дашборд отображает анализ взаимодействия пользователей с карточками Яндекс.Дзен (события).
  48. Используйте фильтры даты и времени, возрастных категорий и тем карточек для управления дашбордом.
  49.  
  50. '''
  51.  
  52. # задаём лейаут
  53.  
  54. # задаём лейаут
  55. external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
  56. app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
  57. app.layout = html.Div(children=[
  58.  
  59. # формируем html
  60. html.H1(children = 'Анализ взаимодействия пользователей с карточками Яндекс.Дзен'),
  61.  
  62. html.Br(),
  63.  
  64. # пояснения
  65. html.Label(note),
  66.  
  67. html.Br(),
  68.  
  69. html.Div([
  70. html.Div([
  71. html.Label('Я шириной 9 колонок из 12-ти возможных:'),
  72. ], className = 'nine columns'),
  73. html.Div([
  74. html.Label('Я шириной 3 колонки из 12-ти возможных:'),
  75. ], className = 'three columns'),
  76. ], className = 'row'),
  77.  
  78. # элементы управления
  79. html.Div([
  80. html.Div([
  81. html.Div([
  82. # выбор временного периода
  83. html.Label('Дата и время:'),
  84. dcc.DatePickerRange(id = 'dt_selector'),],),
  85.  
  86. html.Div([
  87. # выбор жанра
  88. html.Label('Возрастные категории:'),
  89. dcc.Dropdown(id = 'age-dropdown'),],),
  90. ], className = 'six columns'),
  91.  
  92. html.Div([
  93. # выбор темы карточки
  94. html.Label('Темы карточек:'),
  95. dcc.Dropdown(
  96. id = 'item-topic-dropdow'
  97. ),
  98. ], className = 'six columns'),
  99. ], className = 'row'),
  100.  
  101. # элементы управления
  102. html.Div([
  103. html.Div([
  104. # график выпуска игр по годам и жанрам
  105. html.Label('Выпуск игр по жанрам:'),
  106. dcc.Graph(
  107. style = {'height': '50vw'},
  108. id = 'history_absolute_visits'
  109. ),
  110. ], className = 'six columns'),
  111.  
  112. html.Div([
  113. html.Div([
  114. # выбор временного периода
  115. html.Label('Дата и время:'),
  116. dcc.Graph(
  117. style = {'height': '25vw'},
  118. id = 'pie_visits'
  119. ),],),
  120.  
  121. html.Div([
  122. # выбор жанра
  123. html.Label('Возрастные категории:'),
  124. dcc.Graph(
  125. style = {'height': '25vw'},
  126. id = 'engagement_graph'
  127. ),],),
  128. ], className = 'six columns'),
  129. ], className = 'row'),
  130.  
  131. ])
  132.  
  133.  
  134.  
  135. # описываем логику дашборда
  136. def update_figures(selected_item_topic, selected_ages, start_date, end_date):
  137. pass
  138.  
  139. #применяем фильтрацию
  140.  
  141.  
  142.  
  143. #return (
  144. #)
  145.  
  146. if __name__ == '__main__':
  147. app.run_server(debug = True, host='0.0.0.0')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement