Skip to content

Решение тестового задания, состоящего из трёх частей: интерпретация результатов АБ-теста, составление SQL-запросов и написание функций на Python

Notifications You must be signed in to change notification settings

cybermarcus/three_tasks_for_analysis

Repository files navigation

Решение тестового задания

Цель

Решить тестовое задание, состоящее из трех частей: интерпретация результатов 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 – ноутбук с решением третьегго задания

Задание 1. A/B–тестирование.

В ходе тестирования целевой группе была предложена новая механика оплаты услуг на сайте, у контрольной группы оставалась базовая механика. Необходимо проанализировать итоги эксперимента и сделать вывод, стоит ли запускать новую механику оплаты на всех пользователей.

Описание данных

  • groups.csv – файл с информацией о принадлежности пользователя к контрольной или экспериментальной группе (А – контроль, B – целевая группа)
  • groups_add.csv – дополнительный файл с пользователями, полученный спустя 2 дня после передачи данных
  • active_studs.csv – файл с информацией о пользователях, которые зашли на платформу в дни проведения эксперимента.
  • checks.csv – файл с информацией об оплатах пользователей в дни проведения эксперимента.

Этапы решения

  1. Реализовал загрузку датасетов в Pandas с помощью API Яндекс Диска
  2. EDA и предобработка данных
  3. Выбор метрик, формулирование для них гипотез и статистические тесты
  4. Вывод

Задание 2. SQL.

Образовательные курсы состоят из различных уроков, каждый из которых состоит из нескольких маленьких заданий. Каждое такое маленькое задание называется "горошиной". Усердным учеником считаем того пользователя, который хотя бы раз за текущий месяц правильно решил 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

Задание 3. Python

На основании данных из первого задания необходимо реализовать:

  • функцию, которая будет автоматически подгружать информацию из дополнительного файла groups_add.csv (заголовки могут отличаться) и на основании дополнительных параметров пересчитывать метрики
  • функцию, которая будет строить графики по получаемым метрикам

Этапы решения

  1. Реализовал функцию calculate_metrics, которая рассчитывет и возвращает значения метрик CR и ARPUU
  2. Реализовал функцию add_data, которая добавляет к исходному датафрейму данные с Яндекс.Диск и возвращает объединённый датафрейм
  3. Реализовал функцию plotting, которая строит два графика barplot с метриками CR и ARPPU по группам
  4. Для наглядности отрисованы метрики до загрузки дополнительных данных и после

Результат

В первом задании с A/B-тестированием установил, что в группе с новой механикой оплаты услуг конверсия в покупку статистически значимо не изменилась, но прирост метрики ARPPU был подтвержден с помощью метода Bootstrap. Во втором задании с помощью SQL-запроса выявил рост всех метрик в данных. В третьем – автоматизировал работу с метриками в Python.

About

Решение тестового задания, состоящего из трёх частей: интерпретация результатов АБ-теста, составление SQL-запросов и написание функций на Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published