Выгрузка данных по площадкам РСЯ в R

Сентябрь 06, 2019

Яндекс.Директ за лето претерпел много изменений. И большая часть из них связана с РСЯ – автотаргетинг, добавление Google в качества партнера во внешних сетях, площадка zen.yandex.com, которая неожиданно появилась в начале июля и «слила» многим рекламодателям немало денег, а также многое другое.

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

  • Исходные данные: клиент в Яндекс.Директ;
  • Тематика: СРО;
  • Примерный бюджет на рекламу: 600 000 – 800 000 руб./месяц;
  • Статистика: сентябрь 2018 – август 2019;
  • Тип исследуемых РК: РСЯ.

Мастер Отчетов для этой задачи не подойдет – слишком большой объем данных (Big Data), который нельзя выгрузить из интерфейса, и который не откроется обычным Excel. Можно, конечно, выгрузить несколько отчетов, раздробив периоды на более мелкие, а потом вручную сводить их в одну таблицу. Но не очень хотелось так делать. Да и в Excel есть ограничение в размере 1 048 576, а у нас получилась цифра гораздо больше.

Выгрузка данных по площадкам РСЯ в R

Строк в Excel — 1 048 576

К слову, на скриншоте выше открыт .csv файл, который я выгрузил из RStudio. Он содержал в себе 1 692 844 строки (весил 154 МБ), то есть превышал лимит на 600 000+ строк. Всего в Excel 1 048 576 строк и 16 384 столбца. А у нас число строк больше. Надо как-то решать.

Выгрузка данных по площадкам РСЯ в R

Файл с большим количеством строк не был загружен полностью

Поэтому для этой задачи я использовал R и RStudio. Подключился к своим аккаунтам Яндекс.Директа с помощью пакета Алексея Селезнева ryandexdirect — получил токен и выполнил команду, в которой выгрузил данные за целый год. Часть запроса выглядит так:

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

Подробнее читайте в статье Алексея Селезнева: «Загрузка статистики из рекламного аккаунта Яндекс Директ».

Можно поступить чуть другим способом: выгрузить статистику не за год сразу, а за меньший период, например, 2 раза по 6 месяцев, а затем с помощью функции rbind соединить две таблицы.

Выгрузка данных по площадкам РСЯ в R

Суммирование двух таблиц с помощью rblind

Итоговая таблица по площадкам в RStudio выглядит следующим образом:

Выгрузка данных по площадкам РСЯ в R

Выгруженные данные из Яндекс.Директа

Теперь начинается основная работа. Поскольку в отчет попали все рекламные кампании (в том числе и поисковые, и реклама также показывается на площадках Яндекса), то нам необходимо очистить данные от них, оставив только кампании РСЯ.

Для этого я буду использовать пакет dplyr и команду:

В результате в нашем датасете останутся только те кампании, в названиях которых содержится «РСЯ». Таких строк осталось 1 487 290.

Выгрузка данных по площадкам РСЯ в R

Датасет, в котором только РСЯ кампании

Теперь мы можем посчитать количество показов, кликов, расход по всем площадкам за год. Делается это с помощью команды sum.

  • sum(onlyRSYA$Impressions)
  • sum(onlyRSYA$Clicks)
  • sum(onlyRSYA$Cost)

Получим результат:

Выгрузка данных по площадкам РСЯ в R

Функция sum

Показов – 137 889 692, Кликов – 75 884, Расход (руб. с НДС) – 1 760 920.

Важно понимать, что 1 487 290 – это не 1 487 290 площадок РСЯ. Поскольку у нас данные разбиты по дням, и в каждый день могли показываться одни и те же площадки РСЯ. Чтобы посчитать уникальное количество площадок РСЯ, необходимо просуммировать всю статистику по столбцу Placement.

Для этого я просто скопирую данные в новый датасет командой onlyPlacement <- onlyRSYA и воспользуюсь пакетом plyr и командой:

В результате я получил уникальных 42 710 площадок РСЯ за год:

Выгрузка данных по площадкам РСЯ в R

42 710 уникальных площадок РСЯ за год

Вернемся к предыдущему датасету. Я захотел объединить данные по столбцу Дата, чтобы была таблица вида 1 день – 1 строка (суммарная по каждому дню, сколько было кликов, показов и расход). Но есть проблема – в таблице отображаются текстовые столбцы (Название площадки и Внешние сети), поэтому просуммировать просто не получится. Для этого нам нужно вместо конкретной площадки добавить новый столбец, который считал бы количество этих площадок в определенный день. А сами эти два столбца удалить из этого датасета. Таким образом мы сможем и объединить, а затем и визуализировать наш датасет, отобразив нужные метрики в разрезе каждого дня.

Я продублировал датасет onlyRSYAwo <- onlyRSYA, чтобы все делать с ним. Для удаления лишних столбцов воспользуюсь командой onlyRSYAwo$Placement <- NULL. Присвоение значения NULL столбцу удаляет его. Проделаем тоже самое с другими метриками — AvgCpc, ExternalNetworkName, CostPerConversion и CampaignName. В результате у нас останется датасет с 5 переменными:

Выгрузка данных по площадкам РСЯ в R

Очищенный датасет с 5 переменными

Теперь я создаю новый столбец с помощью команды onlyRSYAwo$Plochadka <- 1 и присваиваю ему значение 1.

Выгрузка данных по площадкам РСЯ в R

Новый столбец «Площадка» для суммирования

Теперь мы можем перепроверить и посчитать количество. Проверяем с помощью sum.

Выгрузка данных по площадкам РСЯ в R

Проверка количества строк с помощью sum

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

В результате я получил новый датасет с объединенными по полю «Дата» данными:

Выгрузка данных по площадкам РСЯ в R

Новый датасет, объединенные данные по столбцу «Дата»

Всего 306 строк (306 дней из 365 за год крутилась реклама по РСЯ). Давайте теперь построим график, на котором будут отображены площадки по каждому из дней.

Для этого воспользуемся примером из книги «Using Google Analytics with R» (Michal Brys), которую я перевел и которую можно скачать по ссылке. Для этих целей установим и подключим пакет ggplot2, а потом воспользуемся командой:

В результате получим такой график:

Выгрузка данных по площадкам РСЯ в R

График количества площадок РСЯ по дням

Можно пойти еще дальше и взять пример с точечным графиком + линией тренда. Команда такая:

Выгрузка данных по площадкам РСЯ в R

Точечный график + линия тренда

Как такового тренда (восходящего или нисходящего) нет. Есть лишь некоторые, незначительные колебания. Аналогично можно построить по расходу и дням:

Выгрузка данных по площадкам РСЯ в R

График «Расход по дням»

На графике видна аномалия – самый большой расход за весь год. Это как раз площадка zen.yandex.com, которую Яндекс добавил 1 июля 2019 года и по которой я делал заметку в социальных сетях.

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

Код для визуализации:

Выгрузка данных по площадкам РСЯ в R

Точечный раскрашенный график (клики по дням)

Статистика по всем площадкам РСЯ, что мы выгрузили в R:

  • Количество всех площадок за год – 42 710;
  • Расход по всем площадкам за год — 1 760 920 руб. (с НДС);
  • Количество показов по всем площадкам за год — 137 889 692;
  • Кликов по всем площадкам за год — 75 884;
  • Стоимость клика по всем площадкам – 23,2 руб. (с НДС).

Мне также стало интересно, какое количество площадок принесло нам 75 884 клика. Ведь всего их было 42 710, но не все они привели к переходам. Были площадки с показами, но без кликов. Для этого вернемся к нашему датасету PlacementOrig и отфильтруем по очень простому условию (Кликов > 0).

Сделаю это с помощью команды subset: plWithClicks <- subset(PlacementOrig, Clicks > 0)

В результате я получил датасет, в котором осталось 4 645 площадок РСЯ:

Выгрузка данных по площадкам РСЯ в R

Датасет, в котором только площадки РСЯ с кликами (Клики > 0)

Таким образом, мой клиент за целый год получил 75 884 кликов от 4 645 площадок РСЯ. В среднем, 16.34 клика на площадку. А если брать расход на площадку с кликами, то получится:

Расход = 1 760 920 / 4 645 = 379,10 руб. (с НДС) на площадку

Теперь выгружу площадки РСЯ по которым были клики и конверсии, и посмотрим на результат. Для этого я вернусь к изначальному датасету onlyRSYA со всеми данными, запущу команду plWithConversions <- subset(onlyRSYA, Conversions > 0), получу 208 строк в датасете:

Выгрузка данных по площадкам РСЯ в R

Датасет площадок РСЯ с кликами и конверсиями

А затем также объединю данные по площадкам, чтобы получить конечное число уникальных площадок.

И получаю конечный датасет в виде 82 площадок РСЯ, на которых были конверсии:

Выгрузка данных по площадкам РСЯ в R

Итоговый датасет с площадками РСЯ, по которым были конверсии

Вот список площадок с конверсиями (82 шт.):

Я могу их выгрузить в Excel с помощью команды:

Отфильтровать данные, отформатировать таблицу и посчитать суммарные цифры:

Выгрузка данных по площадкам РСЯ в R

Таблица Excel с площадками РСЯ

В результате я получил 82 площадки с конверсиями, по которым было 6 286 427 показов, 2 596 кликов и расход в размере 58 322,66 руб. (с НДС).

Давайте сведем все данные в общую таблицу, что мы выгрузили из R:

Выгрузка данных по площадкам РСЯ в R

Финальная таблица по площадкам РСЯ

Таким образом, мой клиент за год на РСЯ потратил 1 760 920 руб. (с НДС) и получил 75 884 клика. Площадок с кликами было 4 645, а с конверсиями 82 (0,19% от общего количества). Расход на площадки с конверсиями составил 58 322,66 руб. (3,31% от общего количества).

Аналогично в R для площадок РСЯ можно делать и другие срезы. Например:

  1. посмотреть соотношение площадок (Яндекс и РСЯ / Внешние сети);
  2. оценить площадки в разрезе «Мобильные приложения / Веб-сайты»;
  3. сравнить стоимость клика рекламы в мобильных приложениях и на веб-сайтах;
  4. и т.д.

Я это сделал и с учетом полученных данных подкорректировал рекламные кампании клиента. Вы тоже самое можете проделать со своими рекламными кабинетами, выгрузив статистику Директа в R, и найти какие-нибудь закономерности, аномалии и т.д.

Целью этой статьи было познакомиться (самому и вам) с инструментом R, выгрузкой данных по площадкам Яндекс.Директа с помощью пакета Алексея Селезнева, а также на основе исторических данных за последний год (сентябрь 2018 – август 2019) посмотреть как изменялась ситуация по площадкам РСЯ, а именно:

  1. собрать статистику по всем площадкам РСЯ;
  2. узнать какое количество площадок было с кликами;
  3. понять, какие площадки с кликами привели к конверсиям;
  4. визуализировать данные;
  5. свести полученные данные в единую таблицу.

P.S. Прикрепляю список внешних сетей Яндекса: MoPub, Google, Inner-active, Gameloft, PubNative, Rubicon, AppNexus, CheetahMobile, AdsNative, Smaato, MobFox, Madgic, BidSwitch. Их можно добавить в запрещенные площадки.

Понравилась статья? Ставь оценку 5.0 👉

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике