Untitled

From Sharp Bongo, 4 Months ago, written in Plain Text, viewed 97 times.
URL http://codebin.org/view/db310c77 Embed
Download Paste or View Raw
  1. import pandas as pd
  2. from datetime import datetime, timedelta
  3. from matplotlib import pyplot as plt
  4.  
  5. # Загрузка данных
  6. users = pd.read_csv('ch02_problems01_users.csv')  # профили
  7. visits = pd.read_csv('ch02_problems01_visits.csv')  # сессии
  8.  
  9. # Преобразование данных о времени
  10. users['dt'] = pd.to_datetime(users['dt']).dt.date
  11. users['first_ts'] = pd.to_datetime(users['first_ts'])
  12. visits['session_start'] = pd.to_datetime(visits['session_start'])
  13.  
  14. # Доступный интервал привлечения пользователей
  15. min_analysis_date = users['dt'].min()
  16. observation_date = users['dt'].max()
  17.  
  18. # Горизонт анализа
  19. analysis_horizon = 14
  20. # Максимально возможная дата привлечения с учётом горизонта
  21. max_analysis_date = observation_date - timedelta(days=analysis_horizon - 1)
  22.  
  23. # Расчет размеров когорт
  24. report = (
  25.     users.query("dt >= @min_analysis_date and dt <= @max_analysis_date")
  26.     .groupby("dt")
  27.     .agg({"user_id": "nunique"})
  28. )
  29.  
  30. # Построение графика
  31. report.plot(grid=True)
  32. plt.title('Динамика привлечения пользователей')
  33. plt.xlabel('Дата привлечения')
  34. plt.xticks(rotation=45)
  35. plt.ylabel('Размер когорты')
  36. plt.show()
  37.  
  38. # Расчет среднего размера когорты
  39. mean_daily_cohort_size = report["user_id"].mean().astype('int')
  40.  
  41. # Вывод среднего размера когорты
  42. print("Средний размер когорты:", mean_daily_cohort_size)
  43.  

Reply to "Untitled"

Here you can reply to the paste above