реклама
разместить

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Одна из основных задач PPC-специалиста — следить за конверсионностью рекламы. Александр Любивый из digital-агентства Bquadro показывает в материале для ppc.world, как оптимизировать этот процесс с помощью Python.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Изначально я использовал Python для сбора BI-аналитики по Яндекс.Директу. Это помогло мне сделать процесс изучения статистики более удобным: я стал максимально быстро замечать отклонения в рекламе, а освободившееся время уделял ее доработкам.

Со временем я решил оптимизировать повторяющиеся задачи по отслеживанию конверсионности рекламы. Как результат — процесс оптимизации рекламы ускорился, стало удобнее следить за кампаниями (пара кликов — и все готово!), но самое главное, рутины стало меньше.

В этой статье я покажу, как проверяю конверсионность в РСЯ с помощью Python в разрезе ключевых слов и площадок показа. Если вы повторите мои действия, получите такие отчеты:

Что вам для этого понадобится:

  • Токен для работы с API. Чтобы его получить, у вас должно быть приложение, которое Яндекс проверит и допустит к работе. Если у вас нет приложения, а провернуть все то, что я покажу в этой статье, хочется, воспользуйтесь нашим приложением — так процесс получения токена займет не более минуты. Сделать это можно здесь. Токен будет в адресной строке после “access_token=”.
  • Видеоинструкции, которые я записал для вас: в первой показываю, как построить запрос к API Яндекс.Директ, а во второй — как вывести полученные данные в BigQuery, подключиться к DataStudio и визуализировать их.
  • Готовые файлы, с помощью которых вы сами можете настроить получение статистики по ключевым словам и площадкам.
  • Python-пакет Yadirstat, который позволяет с помощью одной строки кода получить информацию сразу в нескольких разрезах (разбираться в запросах не нужно).
  • Инструкция Яндекса, если вы хотите получить конверсионность по конкретной цели, потому что в этой статье я показываю, как получить общую конверсионность.

Вводные данные

Чтобы построить аналитику для Яндекс.Директа без помощи коннекторов максимально разнообразно и глубоко, нам потребуется 4 составляющих:

  • Запрос к API Яндекс.Директа.
  • DataFrame.
  • BigQuery.
  • Data Studio.

Алгоритм выглядит так:

  1. Строим запросы к API Яндекс.Директа. Пишем на Python конкретные запросы. Например, вывод статистики за последние 5 дней или вывод статистики по ключевым словам за 90 дней.
  2. Запрос к API Яндекс.Директа упаковываем в DataFrame. Для чего это делается: мы не может просто так отправить полученную из API информацию в BigQuery, к тому же у нас есть пустующие ячейки, которые нужно заполнить. Изначально там стоит прочерк “--”, а BigQuery такие прочерки не воспринимает — из-за них столбцы имеют текстовый тип данных, что не позволяет манипулировать данными. После переноса информации в DataFrame и удаления прочерков, мы можем полноценно работать с данными, писать скрипты, считать статистику и т. д.
  3. Отправляем данные из DataFrame в BigQuery. Почему именно так: BigQuery — это простой инструмент интернет-маркетинга и он достаточно легко подключается к Data Studio, что нам и надо.
  4. Подключаемся к DataStudio и визуализируем полученные данные.

Для проверки конверсионности в РСЯ достаточно первых двух шагов: построить запросы к API Яндекс.Директа и упаковать ответы на них в DataFrame. Подробнее об этом далее.

Шаг 1. Создаем структуру запроса

Пример запроса можно взять в Яндексе. Я взял пример, который демонстрирует выполнение запроса к сервису Reports, обработку и вывод результата.

Открываем запрос. В первом блоке оставляем все так, как есть.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Ниже прописываем свой токен, логин клиента и убираем знак # в строке #“returnMoneyInMicros”: “false”, чтобы получать реальные данные денежных единиц.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Теперь фокусируемся на теле запроса.

Пример нашего запроса
Пример нашего запроса

Указываем даты. Если вы хотите задать произвольный период, в “DataRangeType” нужно поставить “CUSTOM_DATE” и указать даты начала и окончания периода в параметрах “DateFrom” и “DateTo”. Если же вам нужны, например, последние 90 дней, поставьте в “DataRangeType” “LAST_90_DAYS”, а “DateFrom” и “DateTo” уберите.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

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

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Если нужно, включаем НДС. То есть в “IncludeVAT” вместо “NO” пишем “YES”.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Выставляем фильтр по кликам (будет показываться статистика, по которой больше 0 кликов) и фильтр по типу площадки (только “Ad_Network”).

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Далее идет кусок с ответами сервера. Его оставляем без изменений.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Шаг 2. Упаковываем ответ на запрос в DataFrame

Я предпочитаю делить процесс построения запросов к серверу Яндекс.Директа на две части:

  • запрос к серверу;
  • файл с логинами, токенами, операциями с таблицами.

Это позволяет удобно работать с учетными данными клиентов и получать данные по всем клиентам сразу, не превращая код в кашу.

Ответ на запрос к API упаковываем в функцию, в которую будем передавать токен, логин, “DateFrom” и “DateTo”.

Первый файл

Здесь нам нужен запрос к серверу и упаковка его ответа в DataFrame.

Запрос мы уже подготовили в первом шаге. Теперь нам нужно избавиться от “--” и сделать из данных полноценный DataFrame.

Код выглядит так:

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Алгоритм действий:

  1. Открываем или создаем файл в режиме записи (название можно дать любое).
  2. Записываем в файл ответ сервера с нашей статистикой (в нашем случае это переменная req).
  3. Закрываем файл.
  4. Сразу же читаем этот файл с помощью pd.read_csv.В скобках указываем название файла (у нас это “cashe.csv”), индекс нашего хедера (можно оставить без изменений), разделители между данными (sep), какая у нас индексируемая колонка, делаем из “--” отсутствие данных (na_values). После скобок с помощью fillna заменяем отсутствующие данные на 0.
  5. Возвращаем наш DataFrame как переменную f.

Второй файл

Импортируем наш файл и библиотеки.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Убираем ограничения на отображение информации.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Записываем свои логин и токен в переменные.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Просим наш соседний файл дать информацию по ключам (обращаемся к функции rsy_keys из соседнего файла и передаем в нее токен и логин): data = rsy_keys(my_token,my_login).

Информацию получили:

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Теперь необходимо оставить только строки с ключами, у которых стоимость конверсий выше среднего уровня на 50%.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Смотрим ключевые слова, по которым было потрачено больше, чем 150% стоимости конверсии и не было конверсий.

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

В итоге видим следующее:

Аналогично получаем статистику по площадкам:

  • В первом файле прописываем еще один запрос (он будет называться “rsy_placement”);
  • В запросе изменяем столбцы (запрашиваем не ключи, а плейсмент) и тип отчета. Используем кастомный отчет “ReportType”: “CUSTOM_REPORT”.
Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python
  • Прописываем код для получения неэффективных площадок:

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Вот и все. В результате у вас появятся все отчеты, которые мы показали во введении:

  • ключевые слова, у которых стоимость конверсии выше среднего уровня на 50%;
  • ключевые слова, по которым расходы составили свыше 150% средней конверсии и которые до сих пор не принесли конверсии;
  • площадки, на которых стоимость конверсии в 1,5 раза выше среднего уровня;
  • площадки, на которых расходы составили больше 150% средней конверсии и которые до сих пор не принесли конверсии.

Если остались вопросы, пишите в комментариях.

1212
реклама
разместить
6 комментариев

Спасибо за статью.

Скажите, а эти данные можно получить в экселе, путем обработки выгрузки с помощью обычных фильтров?

"Подключаемся к DataStudio и визуализируем полученные данные", а где можно посмотреть саму визуализацию.

1

В экселе можно делать любые операции с данными, конкретно в случае Яндекс Директа это делается с помощью надстройки Power Query - она позволяет подключитсья к API Директа.
Посмотреть примеры визуализации вы можете в статье нашего специалиста на хабре https://habr.com/ru/post/515222/

1

Классный материал, но какой-то недописанный. В начале упоминался Bigquery, но в итоге шаг пропущен. Допишите :) Было бы круто с примером ELT на cloud function

Если расписывать все в подробностях, получится чуть ли не целая курсовая работа :) Трудностей в работе с BigQuery быть не должно - необходимо туда положить наши данные с помощью Python, а потом подключиться к нужным таблицам в DataStudio. Наш специалист рассказывал про это в статье на Хабре: https://habr.com/ru/post/515222/

1

Добрый день. А помимо получения статистики, можно ли в автоматическом режиме вносить изменения? Условный пример: собираются данные и раз в месяц делается сверка, программа видит что по определенной площадке цена конверсии х2-х3 от нормы, а сама делает запрет на этой площадке. Такую автоматическую "оптимизацию" реально создать на питоне?

Apple представила MacBook Air на чипе M4 и по цене от $999

У него обновлённая камера Center Stage на 12 Мп.

Источник здесь и далее: Apple
4545
1515
55
11
На лет 10 точно хватит, говорю как пользователь про версии 2014 года - до сих пор юзаю
реклама
разместить
ЦБ начал обсуждать идею ввести «разумное» ограничение на количество оформленных на человека банковских карт

Например — до пяти карт в одном банке.

2222
1010
88
22
Думаю, нужен реестр
Как открыть ИП самостоятельно без отказа: пошаговая инструкция на 2025 год.
Как открыть ИП самостоятельно без отказа: пошаговая инструкция на 2025 год.
11
Telegram-каналы рассказали про «Учёт надоя» — это замаскированное iOS-приложение «Россельхозбанка»

Официально в банке информацию не комментировали.

Обновлено в 16:00 мск. В пресс-службе «Россельхозбанка» подтвердили vc.ru, что «Учёт надоя» — новое iOS-приложение банка. Ранее установленные iOS-приложения работают как обычно — банк рекомендует отключить автообновления и не удалять их.

3333
33
11
Что-то на сверхдержавном...
В Telegram-каналах распространили информацию о закрытии действующей кредитной карты клиента «Т-Банка» из-за подключения самозапрета на кредиты — в банке это опровергли

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

Скриншот из Telegram-канала «Банкста» 
2020
Здравствуйте. Мы не закрываем кредитные карты, если клиент активно ей пользуется. Можем это сделать, если клиент подписал документы, а затем установил самозапрет. В соответствии с Условиями обслуживания, кредитный договор заключаем не во время подписания документов, а в момент активации кредитной карты или совершения первой операций по ней.
Власти не будут использовать геолокацию, чтобы автоматически определять налоговое резидентство россиян

Но данные могут стать поводом для проверки.

2424
11
Когда с VPN стал резидентом всех стран 😎
Как удаленный менеджер по управлению недвижимостью зарабатывает от $1,500 в месяц, работая 3 часа в день: подробный гид по профессии будущего

В эпоху удалённой работы и растущей популярности Airbnb-бизнеса профессия удалённого менеджера по управлению недвижимостью становится всё востребованнее. Сегодня я подробно расскажу, как организовать работу так, чтобы стабильно зарабатывать от $1500 и выше, тратя на это всего 3 часа в день.

Как удаленный менеджер по управлению недвижимостью зарабатывает от $1,500 в месяц, работая 3 часа в день: подробный гид по профессии будущего
22
Новостной агрегатор Digg выкупили соучредитель Reddit Алексис Оганян и сооснователь самого Digg — «звезду раннего интернета» перезапустят для конкуренции с Reddit

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

Оганян, Меццел и Роуз. Источник фото: Inc
44
33
22
[]