Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def update_figures(selected_item_topics, selected_ages, start_date, end_date):
- start_date = dt.strptime(start_date, '%Y-%m-%d')
- end_date = dt.strptime(end_date, '%Y-%m-%d')
- #применяем фильтрацию
- visits_filtered = dash_visits.query('item_topic.isin(@selected_item_topics) and dt >= @start_date and dt <= @end_date and age_segment.isin(@selected_ages)')
- engagement_filtered = dash_engagement.query('item_topic.isin(@selected_item_topics) and dt >= @start_date and dt <= @end_date and age_segment.isin(@selected_ages)')
- #данные для графиков
- visits_by_item_topic = (visits_filtered.groupby(['item_topic','dt'])
- .agg({'visits' : 'sum'})
- .sort_values(by = 'visits', ascending = False)
- .reset_index())
- visits_by_source_topic = (visits_filtered.groupby('source_topic')
- .agg({'visits' : 'sum'})
- .reset_index())
- engagement = (engagement_filtered.groupby('event')
- .agg({'unique_users' : 'mean'})
- .rename(columns = {'unique_users' : 'avg_unique_users'})
- .sort_values(by = 'avg_unique_users', ascending = False)
- .reset_index())
- data_item_topic_dropdown = []
- #график истории событий по темам карточек
- for item in visits_by_item_topic['item_topic'].unique():
- current = visits_by_item_topic[visits_by_item_topic['item_topic'] == item]
- data_item_topic_dropdown += [go.Scatter(x = current['dt'],
- y = current['visits'],
- mode = 'lines',
- stackgroup = 'one',
- name = item)
- ]
- #график разбивки событий по темам источников
- data_pie_source_topic = [go.Pie(labels = visits_by_source_topic['source_topic'],
- values = visits_by_source_topic['visits'])
- ]
- #график средней глубины взаимодействия
- data_engagement_graph = [go.Bar(x = engagement['event'],
- y = engagement['avg_unique_users'],
- name = 'Среднее количество уникальных пользователей')
- ]
- return (
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement