python

Визуализация статистики Яндекс Директ своими руками. От API до Data Studio

  • воскресенье, 16 августа 2020 г. в 00:27:41
https://habr.com/ru/post/515222/
  • Python
  • Яндекс API
  • Визуализация данных
  • Контекстная реклама


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

Что нужно сделать чтобы визуализировать Яндекс Директ в Data Studio:

  1. Получить токен от своего аккаунта (за этим в справку Директа)
  2. На Python Написать запрос к серверу Яндекс Директ
  3. Сложить статистику в Pandas Data Frame
  4. Отправить данные в Google Big Query
  5. Построить визуализацию в Data Studio на основе данных в Google Big Query



Написать запрос к серверу Яндекс Директ и сложить данные в Pandas Data Frame



Раньше я ковырялся с запросами и потом редактировал данные, чтобы их можно было отправить. Можете попробовать, если вам нужны тонкие настройки (Писал про это ранее тут habr.com/ru/post/445734)

Для остальных есть способ намного проще — мой python-пакет yadirstat. (обзор на него habr.com/ru/post/512902). При его использовании вы вводите, токен, логин, даты и получаете готовый Data Frame, в котором ничего не нужно менять.

Примерно так выглядит код:

from yadirstat import yadirstat
x=yadirstat.yadirstat.campaign('FFFFFfffffFFFFggggGGGgg', 'client123123','2020-05-10','2020-07-15')
print(x)


Отправить данные в Google Big Query


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

Для отправки я использую пакет “pandas_gbq”
Код выглядит примерно так:
import pandas_gbq
pandas_gbq.to_gbq(x, 'YD_Days.test', project_id='red-abstraction-99999999',if_exists='replace', progress_bar=None)


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

Теперь проверим отправилась ли информация в Big Query. Если все прошло успешно, будет такой набор полей их типов



Построить визуализацию в Data Studio на основе данных в Google Big Query



Для этого можно сразу в Big Query создать запрос на получение всех данных:
нажимаете “Отправить запрос к таблице”, добавляете после SELECT “*” и убираете лимит. Примерно так выглядит запрос: “SELECT * FROM `red-abstraction-239999.YD_Days.test`”

В Data Studio Подключаемся к Google Big Query





В изменении источника увидим следующие поля


Требуется изменить следующие поля для корректной агрегации:

  • AvgCpc
  • ConversionRate
  • CostPerConversion
  • Ctr


Зачем это делается? Рассмотрим на примере CPC
Если у нас будет две строки со следующими данными:
  • 100 кликов — Стоимость клика 100 руб — Стоимость 10000
  • 2 клика — Стоимость клика — 10 руб — Стоимость 20 руб

Обычное среднее скажет, что CPC — по двум строкам 55
Поэтому, чтобы получить корректный CPC, следует поделить все расходы на все клики. В этом случае CPC получится 98,2

Просто скрываем эти поля и добавляем их аналоги:

  • CPC=SUM(Cost)/SUM(Clicks)
  • CTR = SUM(Clicks)/SUM(Impressions)*100
  • % конверсий = SUM(Conversions)/SUM(Clicks)*100
  • Стоимость конверсии=SUM(Cost)/SUM(Conversions)


Столбец “AvgPageviews” я вообще не использую

Процент отказов — очень сложный столбец из-за того, что Яндекс использует разную статистику исходя из каких-то дополнительных данных.
Если коротко, я использую формулу, именно она дает мне минимальные отклонения от того, что показывает Яндекс:
% отказов = SUM(Bounce_clicks)/(SUM(Clicks)/100).
где Bounce_clicks — количество отказных кликов в каждой из строк
Но этот вопрос выходит за рамки этой статьи :)


На данном этапе получаем следующий набор полей:



Визуализируем


Я делаю две страницы для каждого клиента: общая информация и информация по ключам.

Начнем с первой страницы — общей информации
Тут я размещаю:

  • График с расходами по дням
  • Таблицу со статистикой в разрезе дат
  • Таблицу со статистикой в разрезе кампаний
  • Дашборд со статистикой за вчера (клики, стоимость, цена клика)


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

Теперь добавим график с расходами:

Задаем следующие настройки:

Получаем такой график


Для таблицы с датами задаем такие настройки:

Для таблицы с кампаниями меняем параметр “Date” на название кампаний

Для дашбордов я использую сводку


На выходе у меня получается такая страница со статистикой:


Получаем статистику по ключевым словам:



Все то же самое, только теперь запрос будет выглядеть так:

import pandas_gbq

from yadirstat import yadirstat

x = yadirstat.yadirstat.criteria('AgAAAAАААаввадцоутпдцупдI',client-12247235,'2020-05-10','2020-07-15')
print(x)

pandas_gbq.to_gbq(x, 'YD_criteria.test', project_id='red-abstraction-21239254613',if_exists='replace', progress_bar=None)