Экспорт данных из API Яндекс Метрики в pandas DataFrame
Статья по экспорту данных из API Google Analytics в pandas DataFrame по ссылке.
Содержание:
- Создание приложения в Яндекс OAuth.
- Настройка jupyter / colab.
Какие инструменты понадобятся:
- Авторизованное приложение в Яндексе.
- Доступ к счетчикам Яндекс Метрики.
Создаем приложение в Яндекс OAuth
- Переходим на сервис https://oauth.yandex.ru/ и нажимаем «Зарегистрировать новое приложение».

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

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

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

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

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

Настраиваем jupyter / colab
Следующие шаги опишу на примере google colab, но они будут справедливы и для пользователей jupyter notebooks.
- Подключаем модули:
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'])
Пример полученного отчета:
