Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.78 KB | None | 0 0
  1. def update_figures(selected_item_topics, selected_ages, start_date, end_date):
  2.  
  3.     start_date = dt.strptime(start_date, '%Y-%m-%d')
  4.     end_date = dt.strptime(end_date, '%Y-%m-%d')
  5.  
  6.     #применяем фильтрацию
  7.     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)')
  8.  
  9.     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)')
  10.    
  11.     #данные для графиков
  12.     visits_by_item_topic = (visits_filtered.groupby(['item_topic','dt'])
  13.                                            .agg({'visits' : 'sum'})
  14.                                            .sort_values(by = 'visits', ascending = False)
  15.                                            .reset_index())
  16.                                
  17.     visits_by_source_topic = (visits_filtered.groupby('source_topic')
  18.                                              .agg({'visits' : 'sum'})
  19.                                              .reset_index())
  20.  
  21.     engagement = (engagement_filtered.groupby('event')
  22.                                      .agg({'unique_users' : 'mean'})
  23.                                      .rename(columns = {'unique_users' : 'avg_unique_users'})
  24.                                      .sort_values(by = 'avg_unique_users', ascending = False)
  25.                                      .reset_index())
  26.    
  27.     data_item_topic_dropdown = []
  28.    
  29.     #график истории событий по темам карточек
  30.     for item in visits_by_item_topic['item_topic'].unique():
  31.         current = visits_by_item_topic[visits_by_item_topic['item_topic'] == item]
  32.         data_item_topic_dropdown += [go.Scatter(x = current['dt'],
  33.                                    y = current['visits'],
  34.                                    mode = 'lines',
  35.                                    stackgroup = 'one',
  36.                                    name = item)
  37.                         ]
  38.                        
  39.     #график разбивки событий по темам источников
  40.     data_pie_source_topic = [go.Pie(labels = visits_by_source_topic['source_topic'],
  41.                                     values = visits_by_source_topic['visits'])
  42.  
  43.                         ]
  44.                          
  45.     #график средней глубины взаимодействия
  46.     data_engagement_graph = [go.Bar(x = engagement['event'],
  47.                                    y = engagement['avg_unique_users'],
  48.                                    name = 'Среднее количество уникальных пользователей')
  49.                         ]
  50.    
  51.    
  52.  
  53.     return (
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement