Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python
Изначально я использовал Python для сбора BI-аналитики по Яндекс.Директу. Это помогло мне сделать процесс изучения статистики более удобным: я стал максимально быстро замечать отклонения в рекламе, а освободившееся время уделял ее доработкам.
Со временем я решил оптимизировать повторяющиеся задачи по отслеживанию конверсионности рекламы. Как результат — процесс оптимизации рекламы ускорился, стало удобнее следить за кампаниями (пара кликов — и все готово!), но самое главное, рутины стало меньше.
В этой статье я покажу, как проверяю конверсионность в РСЯ с помощью Python в разрезе ключевых слов и площадок показа. Если вы повторите мои действия, получите такие отчеты:
Что вам для этого понадобится:
- Токен для работы с API. Чтобы его получить, у вас должно быть приложение, которое Яндекс проверит и допустит к работе. Если у вас нет приложения, а провернуть все то, что я покажу в этой статье, хочется, воспользуйтесь нашим приложением — так процесс получения токена займет не более минуты. Сделать это можно здесь. Токен будет в адресной строке после “access_token=”.
- Видеоинструкции, которые я записал для вас: в первой показываю, как построить запрос к API Яндекс.Директ, а во второй — как вывести полученные данные в BigQuery, подключиться к DataStudio и визуализировать их.
- Готовые файлы, с помощью которых вы сами можете настроить получение статистики по ключевым словам и площадкам.
- Python-пакет Yadirstat, который позволяет с помощью одной строки кода получить информацию сразу в нескольких разрезах (разбираться в запросах не нужно).
- Инструкция Яндекса, если вы хотите получить конверсионность по конкретной цели, потому что в этой статье я показываю, как получить общую конверсионность.
Вводные данные
Чтобы построить аналитику для Яндекс.Директа без помощи коннекторов максимально разнообразно и глубоко, нам потребуется 4 составляющих:
- Запрос к API Яндекс.Директа.
- DataFrame.
- BigQuery.
- Data Studio.
Алгоритм выглядит так:
- Строим запросы к API Яндекс.Директа. Пишем на Python конкретные запросы. Например, вывод статистики за последние 5 дней или вывод статистики по ключевым словам за 90 дней.
- Запрос к API Яндекс.Директа упаковываем в DataFrame. Для чего это делается: мы не может просто так отправить полученную из API информацию в BigQuery, к тому же у нас есть пустующие ячейки, которые нужно заполнить. Изначально там стоит прочерк “--”, а BigQuery такие прочерки не воспринимает — из-за них столбцы имеют текстовый тип данных, что не позволяет манипулировать данными. После переноса информации в DataFrame и удаления прочерков, мы можем полноценно работать с данными, писать скрипты, считать статистику и т. д.
- Отправляем данные из DataFrame в BigQuery. Почему именно так: BigQuery — это простой инструмент интернет-маркетинга и он достаточно легко подключается к Data Studio, что нам и надо.
- Подключаемся к DataStudio и визуализируем полученные данные.
Для проверки конверсионности в РСЯ достаточно первых двух шагов: построить запросы к API Яндекс.Директа и упаковать ответы на них в DataFrame. Подробнее об этом далее.
Шаг 1. Создаем структуру запроса
Пример запроса можно взять в Яндексе. Я взял пример, который демонстрирует выполнение запроса к сервису Reports, обработку и вывод результата.
Открываем запрос. В первом блоке оставляем все так, как есть.
Ниже прописываем свой токен, логин клиента и убираем знак # в строке #“returnMoneyInMicros”: “false”, чтобы получать реальные данные денежных единиц.
Теперь фокусируемся на теле запроса.
Указываем даты. Если вы хотите задать произвольный период, в “DataRangeType” нужно поставить “CUSTOM_DATE” и указать даты начала и окончания периода в параметрах “DateFrom” и “DateTo”. Если же вам нужны, например, последние 90 дней, поставьте в “DataRangeType” “LAST_90_DAYS”, а “DateFrom” и “DateTo” уберите.
Указываем название столбцов, которые нужны в отчете. Здесь действуют те же ограничения, что и в Яндекс.Директе. То есть просто так запросить какую угодно статистику нельзя. Если в отчетах Яндекс.Директа система просто не дает выбрать некоторые столбцы, то в работе с API необходимо выбрать нужный вид отчета и столбцы, которые можно использовать с этим отчетом, иначе вы получите ошибку. В справке Яндекса можно узнать, какой тип отчета нужен и какие столбцы в этих отчетах вы сможете использовать.
Если нужно, включаем НДС. То есть в “IncludeVAT” вместо “NO” пишем “YES”.
Выставляем фильтр по кликам (будет показываться статистика, по которой больше 0 кликов) и фильтр по типу площадки (только “Ad_Network”).
Далее идет кусок с ответами сервера. Его оставляем без изменений.
Шаг 2. Упаковываем ответ на запрос в DataFrame
Я предпочитаю делить процесс построения запросов к серверу Яндекс.Директа на две части:
- запрос к серверу;
- файл с логинами, токенами, операциями с таблицами.
Это позволяет удобно работать с учетными данными клиентов и получать данные по всем клиентам сразу, не превращая код в кашу.
Ответ на запрос к API упаковываем в функцию, в которую будем передавать токен, логин, “DateFrom” и “DateTo”.
Первый файл
Здесь нам нужен запрос к серверу и упаковка его ответа в DataFrame.
Запрос мы уже подготовили в первом шаге. Теперь нам нужно избавиться от “--” и сделать из данных полноценный DataFrame.
Код выглядит так:
Алгоритм действий:
- Открываем или создаем файл в режиме записи (название можно дать любое).
- Записываем в файл ответ сервера с нашей статистикой (в нашем случае это переменная req).
- Закрываем файл.
- Сразу же читаем этот файл с помощью pd.read_csv.В скобках указываем название файла (у нас это “cashe.csv”), индекс нашего хедера (можно оставить без изменений), разделители между данными (sep), какая у нас индексируемая колонка, делаем из “--” отсутствие данных (na_values). После скобок с помощью fillna заменяем отсутствующие данные на 0.
- Возвращаем наш DataFrame как переменную f.
Второй файл
Импортируем наш файл и библиотеки.
Убираем ограничения на отображение информации.
Записываем свои логин и токен в переменные.
Просим наш соседний файл дать информацию по ключам (обращаемся к функции rsy_keys из соседнего файла и передаем в нее токен и логин): data = rsy_keys(my_token,my_login).
Информацию получили:
Теперь необходимо оставить только строки с ключами, у которых стоимость конверсий выше среднего уровня на 50%.
Смотрим ключевые слова, по которым было потрачено больше, чем 150% стоимости конверсии и не было конверсий.
В итоге видим следующее:
Аналогично получаем статистику по площадкам:
- В первом файле прописываем еще один запрос (он будет называться “rsy_placement”);
- В запросе изменяем столбцы (запрашиваем не ключи, а плейсмент) и тип отчета. Используем кастомный отчет “ReportType”: “CUSTOM_REPORT”.
Прописываем код для получения неэффективных площадок:
Вот и все. В результате у вас появятся все отчеты, которые мы показали во введении:
- ключевые слова, у которых стоимость конверсии выше среднего уровня на 50%;
- ключевые слова, по которым расходы составили свыше 150% средней конверсии и которые до сих пор не принесли конверсии;
- площадки, на которых стоимость конверсии в 1,5 раза выше среднего уровня;
- площадки, на которых расходы составили больше 150% средней конверсии и которые до сих пор не принесли конверсии.
Если остались вопросы, пишите в комментариях.
Например — до пяти карт в одном банке.
Официально в банке информацию не комментировали.
Обновлено в 16:00 мск. В пресс-службе «Россельхозбанка» подтвердили vc.ru, что «Учёт надоя» — новое iOS-приложение банка. Ранее установленные iOS-приложения работают как обычно — банк рекомендует отключить автообновления и не удалять их.
Под закрытие могут попасть только неактивированные кредитки — по которым не проводилось расходных операций, пояснили в компании.
Но данные могут стать поводом для проверки.
В эпоху удалённой работы и растущей популярности Airbnb-бизнеса профессия удалённого менеджера по управлению недвижимостью становится всё востребованнее. Сегодня я подробно расскажу, как организовать работу так, чтобы стабильно зарабатывать от $1500 и выше, тратя на это всего 3 часа в день.
Монетизироваться не собираются, пока не привлекут «десятки миллионов» ежемесячных пользователей.
Спасибо за статью.
Скажите, а эти данные можно получить в экселе, путем обработки выгрузки с помощью обычных фильтров?
"Подключаемся к DataStudio и визуализируем полученные данные", а где можно посмотреть саму визуализацию.
В экселе можно делать любые операции с данными, конкретно в случае Яндекс Директа это делается с помощью надстройки Power Query - она позволяет подключитсья к API Директа.
Посмотреть примеры визуализации вы можете в статье нашего специалиста на хабре https://habr.com/ru/post/515222/
Классный материал, но какой-то недописанный. В начале упоминался Bigquery, но в итоге шаг пропущен. Допишите :) Было бы круто с примером ELT на cloud function
Если расписывать все в подробностях, получится чуть ли не целая курсовая работа :) Трудностей в работе с BigQuery быть не должно - необходимо туда положить наши данные с помощью Python, а потом подключиться к нужным таблицам в DataStudio. Наш специалист рассказывал про это в статье на Хабре: https://habr.com/ru/post/515222/
тест
Добрый день. А помимо получения статистики, можно ли в автоматическом режиме вносить изменения? Условный пример: собираются данные и раз в месяц делается сверка, программа видит что по определенной площадке цена конверсии х2-х3 от нормы, а сама делает запрет на этой площадке. Такую автоматическую "оптимизацию" реально создать на питоне?