Как сделать когортный анализ в power bi

Добавил пользователь Евгений Кузнецов
Обновлено: 05.10.2024

Привет! Продолжем изучать Pandas. В прошлый раз я рассказал о возможностях библиотеки, а сегодня покажу, как с её помощью делать когортный анализ.

Прежде всего, вспомним, что такое когорты и как их анализировать.

Когорта — это группа людей, которая совершила нужное действие в определенный промежуток времени.

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

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

Еще пример: маркетологи хотят узнать, сколько заказов и выручки принесли пользователи, совершившие свой первый заказ год назад. Теперь когорта — это прошлогодние покупатели, а метрики — количество заказов и выручка.

Получается, когортный анализ состоит из трех шагов: определения нужного действия и временного промежутка когорты и выбора метрик для отслеживания:

Действие Время Метрика
Родились В 1980 году % людей с высшим образованием
Впервые купили Год назад Количество заказов и выручка
Установили приложение Неделю назад % пользователей, открывших приложение еще раз

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

Месяц Клиенты Покупок в 1й месяц Покупок на клиента
Январь 2018 134 161 1.20
Февраль 2018 164 194 1.18
Март 2018 193 200 1.03

Общее количество клиентов и покупок выросло — приятно. Но, сравнив когорты, видим, что в среднем клиенты стали покупать реже — тревожный знак.

Ок, теперь мы готовы к тому, чтобы научиться делать когортный анализ с помощью Pandas. Для наглядности решим задачу.

Задача

Допустим, мы работаем в и хотим понять, сколько заказов и денег клиенты приносят в течение года после первой покупки. Для этого у нас есть данные о заказах:

Каждая строка таблицы orders — это покупка. Мы знаем, когда она произошла, кто её сделал и сколько денег она принесла в магазин. Дата заказа лежит в поле order_date , номер покупателя — в customer_id , а выручка — в sales .

Часто бывает, что даты загружаются в виде текста. Преобразим колонку order_date из текста в дату:

Данные перед нами, теперь можно с ними работать. Начнем с простого: выясним, сколько всего в магазине было покупок и выручки.

Считаем покупки и выручку

Чтобы посчитать общую выручку, просуммируем колонку sales :

Количество заказов можно посчитать с помощью этой же колонки, но вместо суммы используем метод count() :

Теперь посчитаем обе метрики для каждого пользователя. Сгруппируем датафрейм по полю customer_id :

Видим, например, что пользователь AA-10315 сделал 5 заказов и принес $5563 выручки.

Идём дальше. Чтобы построить когорты, нам нужно сгруппировать клиентов по дате их первой покупки. В данных нет такого поля, значит, нужно его посчитать.

Считаем дату первой покупки

Чтобы вычислить дату первой покупки каждого пользователя, сгруппируем данные по customer_id и найдем минимальное значение поля order_date . Результат сохраним в переменную first_orders :

Видим, что пользовать AA-10315 впервые что-то купил 31 марта 2014 года, а пользователь AA-10375 — 21 апреля того же года.

Зная даты первых покупок, можем строить когорты.

Строим когорты

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

План такой: сначала добавим дату первой покупки пользователей в таблицу с заказами, затем сгруппируем по датам первой покупки и заказа и, наконец, посчитаем выручку и количество заказов каждой когорты.

Приступим. Добавим дату первой покупки с помощью метода merge() и сохраним получившийся датафрейм в переменную orders_merged :

В строках получившегося датафрейма всё еще покупки, но теперь в таблице появилась новая колонка: дата первой покупки пользователя.

Агрегируем по дате первой покупки и посчитаем нужные показатели:

Видим, что клиенты от 3 января 2014 года, всего сделали 9 заказов на $1050.6. Посмотрим, когда были эти заказы. Для этого добавим к группировке колонку order_date :

Ага, первый заказ этой когорты был 3 января на $16. В следующий раз клиент вернулся почти год спустя и купил что-то ещё, в этот раз на $153. Следующая покупка была уже в апреле 2015 и так далее.

Когорты готовы, теперь решим задачу.

Решаем задачу

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

Мы знаем, сколько магазин заработал с каждой когорты за всё время. Уточним метрику: посчитаем показатели за первый год жизни когорты.

Сначала узнаем, сколько дней прошло между первой покупкой и последующим заказом, и удалим те, которые случились позже 365 дней. Чтобы посчитать количество дней между заказами, вычтем из колонки order_date столбец first_order :

Чтобы удалить поздние заказы, добавим условие :

Сохраним результат в переменную year_1_filter , отфильтруем ненужные заказы из когортного отчета и сохраним результат в переменную year_1_orders :

В датафрейме остались только заказы, сделанные когортами в первый год после первой покупки. Теперь сгруппируем заказы по дате первой покупки и посчитаем нужные метрики. Результат сохраним в переменную cohorts :

Последний шаг: посчитаем, сколько в среднем заказов и приносят клиенты в течение первого года. Для этого сначала просуммируем показатели каждой когорты, а затем усредним значения методом mean() :

Готово! В среднем за первый год когорты делают по 4 заказа и приносят по $1949 долларов.

Есть много способов улучшить решение, например сгруппировать дневные когорты в недельные или месячные, визуализировать отчет в таблице или на графике. Наконец, интересно разбить когорты по каким-то признакам, например, отделить частных покупателей от компаний — наверняка их показатели существенно отличаются.

Обо всем этом в следующих сериях. Подписывайтесь на канал, чтобы не пропустить.

Со вступительным словом все. В путь!

Проводить все расчеты мы будем в среде JupyterLab. С ноутбуком решения можно ознакомиться по адресу (ссылка).

Загрузка данных в Power BI осуществляется посредством инструмента Power Query (по сути, это визуальный редактор, который генерирует запросы на языке M). При разработке следует придерживаться следующего правила: вся предобработка данных должна производиться с помощью Power Query, а расчет метрик – Power Pivot. Так как наша основная библиотека Pandas, то сразу же задействуем ее возможности.

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


image

На следующем шаге в решении на платформе Power BI предлагается создать вспомогательную таблицу, данные из которой будут подтягиваться в основной массив. Создание таблицы осуществляется посредством функции SUMMARIZE(). Она создает сводную таблицу с агрегированными итогами по выбранным группам: df_groupby_user = SUMMARIZE(df;df[user_id];"first_date_transaction";MIN(df[date]);"total_amount_user";SUM(df[amount]);"count_transaction_user";COUNT(df[amount]))

В библиотеке Pandas имеется ее аналог – функция groupby(). Чтобы применить groupby() достаточно указать необходимый датафрейм, группируемые столбцы, в конце перечислить столбцы, для которых будет применяться агрегирующие функции. Полученный результат приводим к формату обычного датафрейма функцией reset_index(). В заключение переименовываем поля.

image

В Python применяется синтаксическая конструкция dt.strftime('%Y-%m'). Подробное объяснение, как она работает, вы найдете в интернет-публикациях, касающихся работы с датой и временем в Python. На данном шаге важно другое. Обратите внимание на время выполнения операции.

Совсем не pandas-ное быстродействие (24,8 сек.). Строка кода медленнее всех предыдущих.
Этот кусок листинга становиться первым кандидатом на возможный рефакторинг.


Настало время вновь возвратиться к вебинару. Там происходит объединение таблиц по ключевому полю. После чего необходимые поля подтягиваются в основную таблицу с помощью функции RELATED(). В Pandas такой функции нет. Но есть merge(), join(), concat(). В данном случае лучше всего применить первый вариант.


После того как данные с датой первой транзакции попали в основную таблицу, можно рассчитать дельту. Применяем конструкцию apply(lambda x:…), чтобы наглядно продемонстрировать насколько это ресурсоемкий процесс (39,7 сек.). Вот еще один кандидат на переписывание кода.


В основной таблице уже есть дельта по дням, поэтому можно поделить данные столбца на когорты. Принцип: 0 (то есть первая продажа клиенту) – когорта 0; значения больше 0, но меньше или равно 30 это 30; значения больше 30, но меньше или равно 90 это 90 и т.д. Для этих целей в DAX можно применить функцию CEILING(). Она выполняет округление числа в большую сторону до ближайшего целого, кратно значению из второго параметра.

image

В Python я не нашел подобной математической функции, хотя планировал ее обнаружить в модуле math (возможно плохо искал). Поэтому пришлось пойти обходным путем и применить функцию cut(). После разнесения данных на когорты, числовым значениям 0 сопоставилось NaN. Решить эту проблему, применив функцию fillna(), здесь не получиться, так как мы имеем дело с категориальными данными. Сначала нужно добавить новое значение в категории. В конце данного листинга кода меняем тип данных на int. Это сделано для того, чтобы в дальнейшем при построении сводной таблицы по датафрейму новая когорта не оказалась в конце ряда значений.


С помощью функции pivot_table() мы получаем искомую сводную таблицу. У нас получись довольно много когорт, поэтому результат не может целиком отобразиться на экране. Чтобы избежать этого при решении реального кейса можно взять для анализа меньший временной промежуток или укрупнить диапазоны значений самих когорт.


image

image

Следующий этап — построение графика. Нюанс ситуации состоит в том, что нам необходима сумма нарастающим итогом. В Power BI достаточно выбрать необходимый пункт меню 'Быстрые меры' и автоматически будет сгенерирована необходимая формула DAX. С библиотекой Pandas ситуация чуть сложнее. Подвергнем двойной последовательной группировке уже имеющийся датафрейм и применим функцию cumsum(). Так как полученный результат будет еще использоваться, то для построения графика сделаем копию датафрейма. Аккумулированные значения продаж получились довольно большие, поэтому разделим значения на 1000000 и округлим полученный результат до двух цифр после запятой.


Задействуем возможности библиотеки для построения графика. Строится диаграмма буквально одной строчкой кода, но результат не впечатляет. Данный график явно проигрывает визуализациям на любой платформе BI. Можно подключить библиотеку Plotly и поколдовать с надстройками, но это уже совсем другие трудозатраты по сравнению с подходом, продемонстрированным в видео.


image

Сделаем краткие выводы.

В плане расчетов библиотека Pandas вполне может подменить Power Pivot (DAX).

Целесообразность такой замены остается за скобками разговора.

DAX, как и функции библиотеки Python, хорошо справляются с операциями, проводимыми над целыми полями таблицы.

В плане скорости, простоты и удобства разработки визуализаций Power BI превосходит Pandas. На мой взгляд встроенные графики (равно как и создаваемые с помощью библиотек matplotlib, seaborn) уместно применять в двух случаях: экспресс-анализ ряда данных на наличие выбросов, локальных минимумов/максимумов или подготовка слайдов для презентации. Разработку графических управленческих панелей лучше отдать на откуп BI-решениям.

Курс по Power BI Desktop

В этом курсе мы будем учиться использовать программу Microsoft Power BI в нашей работе. Не секрет, что такие знания сделают из вас настоящего лидера и помогут вам добиться успеха в вашей работе.

Урок 1. Введение. Установка Power BI Desktop на Windows и вид приложения

Power BI Desktop — это бесплатное приложение для Windows, которое позволяет вам подключаться к сотням источников данных, преобразовывать, формировать и связывать ваши данные для построения модели данных, создавать визуально насыщенные интерактивные отчеты на основе вашей модели, а затем делиться этой моделью и вашими отчетами с другими членами вашей команды или организацией.

Прежде чем начинать работать с Power BI, вы должны обладать базовыми знаниями Excel. Если вы не совсем уверенны в своих знаниях, то мы настоятельно рекомендуем вам пройти наш курс по Microsoft Excel .

Power BI включает в себя множество инструментов, такие как: Power BI Pro, Power BI Premium, Power BI Mobile, Power BI Desktop и другие. В данном курсе мы рассмотрим именно Power BI Desktop, так как данный инструмент доступен для каждого, и устанавливается на ваш Windows бесплатно. Подчеркну еще раз, что Power BI Desktop работает только с Windows. Теперь давайте перейдем непосредственно к установке программы.

Урок 2. Источники в Power BI Desktop. Импорт данных из Excel и CSV файлов

Урок 3. Подключение к базе данных в Power BI. Импорт таблиц из интернета

Большинство данных корпоративного уровня не хранятся в Microsoft Excel или в файлах CSV. Они чаще всего хранятся в Базе Данных. И чтобы получить к ней доступ, вы должны знать необходимые параметры.

Урок 4. Редактирование таблиц и данных в Power Query

Редактор Power Query — это отдельный инструмент, входящий в состав PowerBI. Возможно, вы знакомы с этим инструментом из Microsoft Excel, где он также используется.

Урок 5. Порядок и принцип редактирования данных в Power BI. Отмена свертывания столбцов

В предыдущем уроке мы начали рассматривать процесс редактирования таблиц в Power Query. Но нам также важно рассмотреть принцип редактирования, а именно, как ваши данные должны выглядеть, чтобы Power BI мог их правильно считать для будущей визуализации. Давайте рассмотрим данный момент и затем перейдем к процессу отмены свертывания столбцов.

Урок 6. Объединение данных из нескольких таблиц

В этом и следующем уроке мы собираемся использовать инструменты формирования данных Power BI Desktop для создания модели. Она включает в себя несколько таблиц, и я сейчас попытаюсь вам объяснить, чего мы пытаемся достичь.

Урок 7. Создание связи между таблицами. Построение единой модели

Урок 8. Визуализация данных. Карта, диаграммы, гистограммы и текстовые данные

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

Урок 9. Фильтрация данных в отчетах Power BI

Урок 10. Как поделиться отчетом через сервер Microsoft, Microsoft Teams и электронную почту

Заключение

На этом мы будем заканчивать данный урок и сам курс по Power BI Desktop. Очень надеемся, что вы открыли для себя что-то новое и будете применять данное приложение в своей профессиональной жизни. Мы желаем вам удачи и увидимся с вами в следующих курсах.

Пошаговое руководство для создания первого отчета в Power BI от ведущего специалиста по автоматизации интернет-рекламы в eLama Екатерины Тюлюкиной.

Екатерина Тюлюкина

Поэтому сейчас компании делают выбор в пользу подготовки отчетности с помощью BI систем. Одна из самых известных и популярных — Power BI.

Что такое Power BI

Это линейка продуктов Microsoft, разработанная для обеспечения на предприятиях удобной и прозрачной работы с отчетностью. Всего в нее вошло семь продуктов: Power BI Desktop, Power BI Services, Power BI Embedded, Power BI Mobile, Power BI Report Server, Шлюзы PBI. Но для решения большинства задач, связанных с анализом продвижения, будет достаточно двух:

Power BI Desktop — приложение для работы с данными, его необходимо установить на компьютер. С его помощью можно подключить источники данных, структурировать их и построить визуализированный отчет с таблицами и диаграммами.

Power BI Services — это портал, облачный сервис, в котором публикуются все отчеты, созданные в Power BI Desktop. Функции этого портала скорее административные, с его помощью, например, можно управлять всеми отчетами в организации и доступами к ним.

Принцип работы Power BI достаточно прост: данные из различных каналов передаются в систему с помощью коннекторов, проходят обработку и визуализируются в заранее подготовленном шаблоне. На выходе получается готовый структурированный отчет, который может самостоятельно обновляться в зависимости от заданных настроек.

схема работы

Упрощенная схема работы Power BI с несколькими популярными источниками

Созданным отчетом можно делиться, внедрять на сайт или просто использовать для мониторинга, система позволяет настроить оповещения о критических показателях и многое другое.

При этом в большинстве случаев будет достаточно базовых возможностей программы и покупка платного пакета не потребуется. Например, в бесплатной версии Power BI можно использовать все встроенные источники данных, визуализации и службы. Потребность в платной подписке Power BI Pro, как правило, возникает, когда появляется необходимость работать над отчетностью вместе с коллегами и клиентами без выгрузки в интернет, а в Power BI Premium — когда нужно обрабатывать огромные массивы данных. Оценить и сравнить возможности Power BI Pro и Power BI Premium можно на сайте сервиса.

Power BI может помочь сэкономить много времени, сил и средств при подготовке отчетности. Настроив его инфраструктуру единожды, специалист будет долго наслаждаться автоматически создаваемыми отчетами. Однако настройка и подготовка первого отчета не такая простая, как может показаться изначально. Иногда для создания подключения к источникам данных, недоступным по умолчанию, или структурирования полученной информации может потребоваться помощь программиста.

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

Ниже поговорим о том, как начать работу с Power BI самостоятельно и разберем основные возможности его работы.

Как начать пользоваться отчетами в Power BI

Для начала потребуется скачать версию Power BI Desktop на компьютер. Программа работает только на Windows. Для работы на устройствах от Apple потребуется в первую очередь установить виртуальную систему Windows и уже после загрузить Power BI Desktop.

Ошибки при работе с Power BI

Если почты с корпоративным доменом нет, можно зарегистрировать бесплатную пробную версию Office 365 — так вы получите доменное имя в системе Microsoft и сможете использовать почту для подключения Power BI. Подробнее, о том как пройти регистрацию этим способом, можно прочесть в справке Power BI.

После завершения регистрации откройте скачанное приложение Power BI Desktop и войдите в систему. Вы увидите чистый рабочий стол, на котором предстоит создать первый отчет. Далее работа, как правило, строится из нескольких этапов.

Этап 1. Получение данных

Сейчас Power BI поддерживает интеграцию с более чем 70 готовыми источниками, среди них — рекламные площадки, системы веб-аналитики, базы данных. Весь список доступен в справочном центре.

Подключив один или несколько источников к Power BI, вы сможете строить визуализации.

Получение данных

Вот кратко о подключении Google Analytics: нажимаем Get Data в приложении Power BI, выбираем Online Services, затем находим Analytics, подтверждаем связь с аккаунтом в системе аналитики, выбираем нужную таблицу из массива данных и нажимаем Load. Таблица с данными будет загружена в систему и с ней можно работать.

Загрузка данных из Analytics

Важно отметить, что в Google Analytics данные могут семплироваться, и в таком случае для работы с точными данными потребуется подобрать другое решение для его интеграции или найти в интернете инструкции, описывающие способы обойти семплирование.

Этап 2. Работа с данными в отчете, моделирование данных, связи

Данные

С помощью Power Query — специальной надстройки внутри Power BI для импорта и обработки данных — можно выполнять различные операции с данными: удалить столбец, изменить тип данных, объединить таблицы и т. д. Power Query позволяет сохранять используемые запросы и применяет настройку к новым данным. Подробнее о возможностях надстройки и работе с ней — в справке.

Помимо этого, в Power BI можно рассчитать дополнительные показатели, например, что-то суммировать, найти разницу, процент от числа или произвести более сложные вычисления. Такие операции можно делать прямо в отчетах — с помощью мер, вычисляемых столбцов и вычисляемых таблиц.

Таблицы

Все вычисления в Power BI выполняются на языке DAX (краткое руководство).

Однако привести данные к необходимому виду — это еще не все. Если загружаемые данные поступают в отчет в виде сразу нескольких таблиц (что чаще всего бывает при использовании более одного источника), необходимо задать связи между ними. Без связей не получится строить зависимость между несколькими источниками.

По умолчанию Power BI установит связи между столбцами с идентичным названием, остальные придется задать вручную. Их можно установить в нескольких режимах, выберите тот, который удобен вам:

Управление связями

Изменение связи

Всего в Power BI существуют четыре типа кратности: многие к одному, один ко многим, многие ко многим и один к одному. Все они обозначают отношение значений в столбце одной таблицы к значениям в столбце другой таблицы (подробнее в справке).

Также каждая связь должна иметь параметр направления кросс-фильтрации, от него зависит, как будут обрабатываться таблицы. Чаще всего используется однонаправленная фильтрация, к двунаправленной фильтрации прибегают когда одна из таблиц соотносится с несколькими таблицами сразу (подробнее в справке).

Этап 3. Визуализации

выбор формата

Ниже на скриншоте — несколько простых визуализаций:

Визуализации

1 — Круговая диаграмма. 2 — Карточка с числом. 3 — Индикаторная диаграмма. 4 — Карточка с текстом. 5 — Таблица.

Помимо вышеперечисленных визуализаций, Power BI есть всевозможные диаграммы, карты, графики, срезы и т. д. Полный список — в справке. Вы с легкостью найдете вариант, применимый к вашему набору данных.

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

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

Этап 4. Выгрузка, внедрение и публикация отчета

Публикация

Когда отчет попадет в Power BI Services, его можно будет экспортировать в PowerPoint или PDF, скачать, но самое приятное — опубликовать в интернет. Это позволяет в любой момент получить доступ к отчету по ссылке, при этом данные в отчете могут обновляться, а ссылка на отчет останется неизменной.

Публикация в интернете

При выборе этой функции система предложит два варианта:

Создать код внедрения для размещения на сайте.

Этап 5. Настройка автообновления по расписанию

Настройка расписания

Обновление происходит автоматически: данные загружаются в шаблон отчета без участия специалиста — и это экономит время сотрудников.

Кроме того, данные нельзя ненамеренно изменить, что исключает возможность ошибок в отчетах из-за человеческого фактора.

Обновление статистики в Директе

Поэтому перед настройкой частоты обновлений отчетов, проверьте частоту обновлений данных у источника.

Заключение

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

Чтобы разобраться в работе Power BI, посмотрите уроки от Microsoft, они дают ответы на все основные вопросы, которые возникают при работе с сервисом.

Читайте также: