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

Ruslan Fatkhutdinov

--

Статья по экспорту данных из API Google Analytics в pandas DataFrame по ссылке.

Содержание:

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

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

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

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

  1. Переходим на сервис 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.

  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'])

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

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Responses (1)

Write a response