# задаём данные для отрисовки from sqlalchemy import create_engine # пример подключения к базе данных для Postresql #db_config = {'user': 'my_user', # 'pwd': 'my_user_password', # 'host': 'localhost', # 'port': 5432, # 'db': 'games'} #engine = create_engine('postgresql://{}:{}@{}:{}/{}'.format(db_config['user'], # db_config['pwd'], # db_config['host'], # db_config['port'], # db_config['db'])) # пример подключения к базе данных для Sqlite engine = create_engine('sqlite:////db/games.db', echo = False) # получаем сырые данные query = ''' SELECT * FROM data_raw ''' games_raw = pd.io.sql.read_sql(query, con = engine) # преобразуем типы games_raw['year_of_release'] = pd.to_datetime(games_raw['year_of_release']) columns = ['na_players', 'eu_players', 'jp_players', 'other_players'] for column in columns: games_raw[column] = pd.to_numeric(games_raw[column], errors = 'coerce') games_raw['total'] = games_raw[['na_players', 'eu_players', 'jp_players', 'other_players']].sum(axis = 1).round(2) # сформируйте графики для отрисовки games_raw = games_raw[['name', 'platform', 'genre', 'total']].sort_values(by = 'total', ascending = False).head(10) # напишите код data = [go.Table(header = {'values': ['Игра', 'Платформа', 'Жанр', 'Продажи по всем регионам'], 'fill_color': 'lightgrey', 'align': 'center'}, cells = {'values': games_raw.T.values})] # напишите код # задаём лейаут external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] app = dash.Dash(__name__, external_stylesheets=external_stylesheets,compress=False) app.layout = html.Div(children=[ # формируем заголовок тегом HTML html.H1(children = 'Топ-10 игр по продажам'), dcc.Graph( figure = {'data': data, 'layout': go.Layout() }, id = 'games_by_genre' # напишите код ), ]) # описываем логику дашборда if __name__ == '__main__': app.run_server(host='0.0.0.0', port=3000)