От жанра к жанру картина тоже не меняется. Есть любители, готовые слушать «поп» тысячами секунд, есть те, кто половину композиций пролистывает в самом начале. Зато другую половину, судя по медиане, слушают почти до конца. Так что же с задачей, которую поставил менеджер? Вы к ней готовы: у вас есть инструменты группировки и сортировки данных, а также для расчёта статистики. С этим уже можно приносить пользу в бизнесе. До начала эксперимента метрика happiness в Яндекс.Музыке была равна 57.456 секунд. Если время прослушивания выросло, значит, Радио хорошо повлияло на сервис, и такие данные могут обосновать окончательное решение. Если же метрика уменьшилась или не изменилась в условиях, где другие факторы сказаться не могли – тогда это нововведение не повлияло на аудиторию либо повлияло отрицательно. Тоже результат: стоит разобраться, почему. Команда каждого продукта сама решает, как считать «уровень счастья». Для Яндекс.Музыки это медианное время прослушивания по пользователям. Необходимо посчитать метрику happiness и подготовить отчётную таблицу, где будут собраны все данные, отвечающие на поставленный вопрос. Метрика happiness рассчитывается так: Считаем, как долго каждый пользователь слушал музыку. Для этого сгруппируем DataFrame по пользователю. Для примера возьмём последние 5 строк таблицы. df.tail() Сгруппируем по пользователю: df.tail().groupby('user_id') Посчитаем общее время прослушивания музыки: df.tail().groupby('user_id').sum() Находим медианное значение для суммы прослушиваний по пользователю. print(df.tail().groupby('user_id').sum().median()) 167.334833 Аналитик то и дело показывает свою работу нетехническим специалистам: проджектам, маркетологам, топ-менеджерам. Они могут не владеть терминологией. Поэтому ваш отчёт, не теряя в содержательности, должен быть доступен широкой аудитории без подробных комментариев. В дальнейших курсах программы «Аналитик данных» вы узнаете, как наполнять отчёты графиками и другими средствами визуализации. Здесь же задача такова, что хватит и наглядной таблицы с ключевыми показателями сервиса. Однако её детализация и нотация, т.е. устройство и словесное содержание, тоже должны выглядеть дружественными к пользователю. Даже в таком нехитром деле есть правила, которые стоит соблюдать. Показывая, как меняется какой-нибудь параметр во времени, поместите его значения в строке, а столбцами задавайте временные промежутки. image Если нужно показать разнородные признаки для конкурирующих категорий (например, для жанров), то каждой категории отведите отдельную строку, а значения признаков размещайте по столбцам. image Не старайтесь обязательно собрать все данные в одну таблицу: лучше несколько таблиц, чтобы каждая отражала одну важную идею. Отлично работает детализация от большего к меньшему. К общей сводной таблице прилагайте более подробные. Например, сначала обзорная таблица по всему сервису, затем более детальные: сводки по группам пользователей, по городам и т.п. image Проявите заботу о коллегах — старайтесь оформлять результаты наглядно и понятно. TASK_1_4 Рассчитайте метрику happiness после проведения эксперимента для всего набора данных. Действуйте по инструкции из урока. Сохраните полученный результат в переменной current_happiness и выведите на экран. SOLUTION import pandas as pd df = pd.read_csv('music_log_upd.csv') current_happiness=df.groupby('user_id').sum().median() print(current_happiness) TASK_2_4 Внесите результат своей работы в существующую таблицу и вручную рассчитайте разность двух значений метрики happiness. Названия столбцов: metrics — метрика before_test — до эксперимента after_test — после эксперимента absolute_difference — абсолютная разница Значение метрики happiness после эксперимента: 62.344431 SOLUTION import pandas as pd exp = [['happiness', 0, 0, 0]] columns = ['metrics','before_test','after_test','absolute_difference'] exp = [['happiness', 57.456 , 62.344431, 62.344431-57.456]] metrics = pd.DataFrame(data=exp,columns=columns) print(metrics) TASK_3_4 Вы много исследовали жанры рок и поп, давайте сведём в одну таблицу всю информацию о них. Недостаёт данных по року. Получите выборку прослушанных композиций в жанре рок, сохраните в переменной genre_rock. Получите максимальное и минимальное значения времени прослушивания, сохраните соответственно в переменных genre_rock_max и genre_rock_min, выведите на экран со строками: 'Максимальное время прослушивания в жанре рок равно:' 'Минимальное время прослушивания в жанре рок равно:' SOLUTION import pandas as pd df = pd.read_csv('music_log_upd.csv') # <введите здесь решение для поиска недостающих данных> genre_rock=df[(df['genre_name']=='rock')&(df['total_play_seconds']!=0)] # максимальное время прослушивания в жанре рок genre_rock_max=genre_rock['total_play_seconds'].max() # минимальное время прослушивания в жанре рок genre_rock_min=genre_rock['total_play_seconds'].min() print('Максимальное время прослушивания в жанре рок равно:',genre_rock_max) print('Минимальное время прослушивания в жанре рок равно:', genre_rock_min) TASK_4_4 Соберите результаты исследования в таблицу research_genres_result, которую нужно создать конструктором DataFrame(). Его аргумент data — список с данными, аргумент columns — список названий столбцов. Выведите полученную таблицу на экран. SOLUTION import pandas as pd data = [['pop', 8663, 34.6, 1158.03, 0.000794], ['rock', 6828, 33.3, 1699.14882, 0.014183]] columns = ['genre_name','total_track','skip_track','max_total_time','min_total_time'] research_genres_result=pd.DataFrame(data=data,columns=columns) print(research_genres_result)