написать код
должна быть разница в поведении групп, которые проходят и не проходят обучение. Но так ли это? Влияет ли обучение на скорость прохождения других этапов игры? Определить, насколько обучение сокращает время прохождения этапов игры.
#Получаем данные из файлов 7_4_Events.csv** и **purchase.csv
import pandas as pd
events_df = pd.read_csv('7_4_Events.csv') 
purchase_df = pd.read_csv('purchase.csv')
display(events_df.head(10))
display(purchase_df.head(10))
events_df_2018 = events_df[events_df['start_time'].str[:4] == '2018'] #Таблица за 2018 год
users_2018 = events_df_2018[events_df_2018['event_type'] == 'registration']['user_id'].to_list() # Список пользователей зарегистрированных в 2018
events_df = events_df[events_df['user_id'].isin(users_2018)] #Создание таблицы с пользователями, которые зарегистрировались только в 2018
purchase_df = purchase_df[purchase_df['user_id'].isin(users_2018)] #Таблица об оплате пользователей зарегистрировались в 2018
display (events_df)

#Для начала посмотрим, сколько пользователей совершают событие registration.

events_df[events_df['event_type'] == 'registration']['user_id'].nunique()

#Посмотрим на срез данных по событию tutorial_start.

events_df[events_df['event_type'] == 'tutorial_start'].head(10)

#Посмотрим на количество пользователей, которые совершают событие tutorial_start:

events_df[events_df['event_type'] == 'tutorial_start']['user_id'].nunique()

#Как мы видим, число пользователей, которые перешли к выполнению обучения, меньше, чем число пользователей, прошедших регистрацию.

#Давайте определим процент пользователей, которые перешли к выполнению обучения, и запишем его в переменную percent_tutorial_start_users.

registered_users_count = events_df[events_df["event_type"] == "registration"][
    "user_id"
].nunique()
tutorial_start_users_count = events_df[events_df["event_type"] == "tutorial_start"][
    "user_id"
].nunique()
percent_tutorial_start_users = tutorial_start_users_count / registered_users_count
print(
    "Процент пользователей, начавших обучение (от общего числа зарегистрировавшихся): {:.2%}".format(
        percent_tutorial_start_users
    )
)

#Теперь давайте посмотрим, какое количество пользователей проходит обучение до конца (событие tutorial_finish).

events_df[events_df['event_type'] == 'tutorial_finish']['user_id'].nunique()

#Рассчитаем процент пользователей, завершивших обучение, среди пользователей, которые начали обучение. Это будет показатель tutorial_completion_rate (коэффициент «завершаемости» обучения).

tutorial_finish_users_count = events_df[events_df["event_type"] == "tutorial_finish"][
    "user_id"
].nunique()
tutorial_completion_rate = tutorial_finish_users_count / tutorial_start_users_count
print(
    "Процент пользователей, завершивших обучение: {:.2%}".format(
        tutorial_completion_rate
    )
)


#Cоздадим список пользователей, которые завершили обучение
tutorial_finish_users = events_df[events_df['event_type'] == 'tutorial_finish']['user_id'].tolist()

# Находим события начала и завершения уровней игры для пользователей, завершивших обучение, и не завершивших обучение
level_events = events_df[(events_df['event_type'] == 'level_choice') | (events_df['event_type'] == 'pack_choice')]
tutorial_start_users = events_df[events_df['event_type'] == 'tutorial_start']['user_id'].tolist()
non_tutorial_users = [user for user in events_df['user_id'].unique() if user not in tutorial_start_users]