Для подсчета конверсии используйте - cumulativeData['orders']/cumulativeData['visitors']
4 вариант – Изобразить точечный график числа заказов по пользователям.
Для этого с помощью groupby получите таблицу ordersByUsers следующего вида
А затем с помощью scatter по оси у – отложите ‘orders’, по оси х - pd.Series(range(0,len(ordersByUsers)))
5 вариант – Получить 90, 95, 99 перцентили числа заказов на пользователя
Для этого с помощью groupby получите таблицу ordersByUsers следующего вида
А затем примените np.percentile к столбцу orders
6 вариант – Изобразить график стоимостей заказов и получить 95, 99 перцентили стоимости.
Используйте таблицу orders, по оси х - pd.Series(range(0,len(orders['revenue']))), по оси y – revenue
А затем примените np.percentile к столбцу revenue таблицы orders
11.Сделать выводы
2 часть задания
1.Получите исходные данные для решения поставленной задачи.
2.Прочитайте данные с помощью pandas.
3.Проверьте данные на наличие пропусков, дубликатов и других аномалий.
4.Преобразуйте данные к нужному формату, если это необходимо.
5.Выведите на экран количество каждого события в порядке убывания частоты (event_name). Какое событие встречается чаще всего?
6.Подсчитать сколько пользователей совершали каждое из этих событий,
используйте groupby, agg({ 'user_id':'nunique'})
7.Определите количество пользователей в каждой группе (246, 247, 248).
8.Найдите пользователей, которые пересекаются (присутствуют в обоих группах), если они есть.
9.Провести А/А тест.
Нулевая гипотеза: Группа 246 и 247 не имеет различий Альтернативная гипотеза: Группа 246 и 247 отличаются.
Используйте функцию
def test_groups(group_a, group_b, event, alpha):
#получим количество успехов
group_users = np.array([DATA.query('event_name == @event and group == @group_a').user_id.nunique(),
DATA.query('event_name == @event and group == @group_b').user_id.nunique()])
#получим количество пользователей в группах total_users = np.array([DATA.query('group ==
@group_a').user_id.nunique(),
DATA.query('group == @group_b').user_id.nunique()])
#пропорция успехов в первой группе: p1 = group_users[0]/total_users[0]
#пропорция успехов во второй группе: p2 = group_users[1]/total_users[1]
#пропорция успехов в комбинированном датасете:
p_combined = (group_users[0] + group_users[1]) / (total_users[0] + total_users[1])
#разница пропорций в датасетах
difference = p1 - p2
#считаем статистику в ст.отклонениях стандартного нормального распределения
z_value = difference / mth.sqrt(
p_combined * (1 - p_combined) * (1 / total_users[0] + 1 / total_users[1])
)
#задаем стандартное нормальное распределение (среднее 0, ст.отклонение 1)
distr = stats.norm(0, 1)
p_value = (1 - distr.cdf(abs(z_value))) * 2
print('p-значение: ', p_value)
if p_value < alpha:
print('Отвергаем нулевую гипотезу: есть значимая разница между долями')
else:
print(
'Не получилось отвергнуть нулевую гипотезу, нет оснований считать доли разными'
)
Затем необходимо задать уровень статистической значимости alpha и для каждого события применить test_groups(246, 247, i, alpha),
где I – это название события.
10. Провести А/B тест
Нулевая гипотеза: Нет различиий между группой А (246) и группой B (248).
Альтернативная: Есть различия между контрольной и экспериментальной группами.
11. Сделать выводы
Содержание отчета
1.Титульный лист
2.Цель работы
3.Вариант задания с кратким описанием набора данных
4.Пояснения и скриншоты по каждому пункту выполнения лабораторной работы
5.Ссылка на ваш Jupyter-ноутбук
6.Расширенный вывод по вашему исследованию