Найти в Дзене
In Data We Trust

Экспорт данных из API Яндекс Метрики в pandas DataFrame

Оглавление

Оригинал статьи "Экспорт данных из API Яндекс Метрики в pandas DataFrame" от 08.08.2019 на medium.

Содержание:

  1. Создание приложения в Яндекс OAuth.
  2. Настройка jupyter / colab.

Какие инструменты понадобятся:

  • Авторизованное приложение в Яндексе.
  • Доступ к счетчикам Яндекс Метрики.

Создаем приложение в Яндекс OAuth

  1. Переходим на сервис https://oauth.yandex.ru/ и нажимаем «Зарегистрировать новое приложение».

2. В поле «Название приложения» вводим любое название.

3. В разделе «Платформы» ставим галочку напротив пункта «Веб-сервисы». В появившемся поле нажимаем «Подставить URL для разработки», чтобы в поле заполнилось значение https://oauth.yandex.ru/verification_code.

-2

4. В разделе «Доступы» выбираем поле «Яндекс.Метрика» и ставим галочку напротив пункта «Получение статистики, чтение параметров своих и доверенных счётчиков».

-3

5. Опускаемся в конец страницы и нажимаем «Создать приложение». На новой странице будет информация о созданном приложении. Нам нужно значение поля «ID».

-4

6. Открываем url https://oauth.yandex.ru/authorize?response_type=token&client_id=<сюда вставить значение ID>

7. В открывшемся окне нажимаем «Разрешить».

-5

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

-6

Настраиваем jupyter / colab

Следующие шаги опишу на примере google colab, но они будут справедливы и для пользователей jupyter notebooks.

  1. Подключаем модули:

import pandas as pd
from pandas.io.json import json_normalize
import json
from requests_html import HTMLSession
session = HTMLSession()

Если каких-то модулей нет, их можно установить напрямую из jupyter / colab:!pip install <модуль>

2. Формируем HTTP заголовок.

Передача авторизационного токена в параметрах URL перестанет работать 13 февраля 2019 года. Чтобы продолжить работу с API Метрики, настройте авторизацию по токену в HTTP-заголовке. https://tech.yandex.ru/metrika/doc/api2/intro/authorization-docpage/#authorization

metrika_headers = {
'GET': '/management/v1/counters HTTP/1.1',
'Host': 'api-metrika.yandex.net',
'Authorization': '<
токен авторизации, полученный раньше>',
'Content-Type': 'application/x-yametrika+json'

}

3. Формируем url для запроса. Справочник по группировкам и метрикам доступен в справочнике Яндекса по ссылке.

Для примера возьмем url с отчетом по операционным системам.

metrika_url = 'https://api-metrika.yandex.net/stat/v1/data?ids=<номер счетчика сайта>&metrics=ym:s:avgPageViews&dimensions=ym:s:operatingSystem&limit=5'

6. Отправляем запрос и формируем json.

json_content_response = session.get(metrika_url, headers=metrika_headers).json()

7. Сохраняем в DataFrame данные блока ‘data’, с распределением по колонкам содержимого из каждого блока ‘dimension’.

data = json_normalize(json_content_response['data'],record_path=['dimensions'])

Пример полученного отчета:

-7