Решить тестовое задание, состоящее из трех частей: интерпретация результатов A/B-теста, составление SQL-запросов и написание функций на Python.
Python, pandas, mathplotlib, seaborn, scipy, pandahouse, SQL, Clickhouse, API Яндекс Диска для загрузки датасетов
CH.py
– в модуле реализован класс Getch, объект которого подключается к базе данных и отправляет запрос, используя в качестве параметров для подключения переменные окруженияproblem1_ab_testing.ipynb
– ноутбук с решением первого заданияproblem2_sql.ipynb
– ноутбук с решением второго зхаданияproblem3_functions.ipynb
– ноутбук с решением третьегго задания
В ходе тестирования целевой группе была предложена новая механика оплаты услуг на сайте, у контрольной группы оставалась базовая механика. Необходимо проанализировать итоги эксперимента и сделать вывод, стоит ли запускать новую механику оплаты на всех пользователей.
groups.csv
– файл с информацией о принадлежности пользователя к контрольной или экспериментальной группе (А – контроль, B – целевая группа)groups_add.csv
– дополнительный файл с пользователями, полученный спустя 2 дня после передачи данныхactive_studs.csv
– файл с информацией о пользователях, которые зашли на платформу в дни проведения эксперимента.checks.csv
– файл с информацией об оплатах пользователей в дни проведения эксперимента.
- Реализовал загрузку датасетов в Pandas с помощью API Яндекс Диска
- EDA и предобработка данных
- Выбор метрик, формулирование для них гипотез и статистические тесты
- Вывод
Образовательные курсы состоят из различных уроков, каждый из которых состоит из нескольких маленьких заданий. Каждое такое маленькое задание называется "горошиной". Усердным учеником считаем того пользователя, который хотя бы раз за текущий месяц правильно решил 20 горошин. Необходимо написать оптимальный запрос, который даст информацию о количестве усердных студентов.
Также необходимо в одном запросе выгрузить следующую информацию о группах пользователей:
- ARPU
- ARPAU
- CR в покупку
- СR активного пользователя в покупку
- CR пользователя из активности по математике (subject = ’math’) в покупку курса по математике
ARPU считается относительно всех пользователей, попавших в группы.
Активным считается пользователь, за все время решивший больше 10 задач правильно в любых дисциплинах.
Активным по математике считается пользователь, за все время решивший 2 или больше задач правильно по математике.
Все данные находятся в табличном виде в ClickHouse
default.peas
Название атрибута | Тип атрибута | Смысловое значение |
---|---|---|
st_id | int | ID ученика |
timest | timestamp | Время решения карточки |
correct | bool | Правильно ли решена горошина? |
subject | text | Дисциплина, в которой находится горошина |
default.studs
Название атрибута | Тип атрибута | Смысловое значение |
---|---|---|
st_id | int | ID ученика |
test_grp | text | Метка ученика в данном эксперименте |
default.final_project_check
Название атрибута | Тип атрибута | Смысловое значение |
---|---|---|
st_id | int | ID ученика |
sale_time | timestamp | Время покупки |
money | int | Цена, по которой приобрели данный курс |
subject | text | Дисциплина |
Отправку запросов реализовал в Jupyter Notebook с помощью pandahouse
На основании данных из первого задания необходимо реализовать:
- функцию, которая будет автоматически подгружать информацию из дополнительного файла groups_add.csv (заголовки могут отличаться) и на основании дополнительных параметров пересчитывать метрики
- функцию, которая будет строить графики по получаемым метрикам
- Реализовал функцию
calculate_metrics
, которая рассчитывет и возвращает значения метрик CR и ARPUU - Реализовал функцию
add_data
, которая добавляет к исходному датафрейму данные с Яндекс.Диск и возвращает объединённый датафрейм - Реализовал функцию
plotting
, которая строит два графика barplot с метриками CR и ARPPU по группам - Для наглядности отрисованы метрики до загрузки дополнительных данных и после
В первом задании с A/B-тестированием установил, что в группе с новой механикой оплаты услуг конверсия в покупку статистически значимо не изменилась, но прирост метрики ARPPU был подтвержден с помощью метода Bootstrap. Во втором задании с помощью SQL-запроса выявил рост всех метрик в данных. В третьем – автоматизировал работу с метриками в Python.