Вместо актуальности

Меня зовут Александр, я активно исследую экономические данные, строю регрессии, ML-модели. Данные использую разные: перекрёстные, панельные, временные.
По специфике своей работы часто пользуюсь ЕМИСС. ЕМИСС — это кладезь социально-экономических данных, но и одновременно платформа, которая может довести до головных болей и дергающегося глаза, а то и двух сразу.

Поставим себе, например, задачу выяснить, как влияет Х на У. Возьмём в качестве объектов наблюдения — регионы РФ. И тут нас будут ждать сюрпризы. Как быстро, не вырывая волосы из головы, получить две колонки данных за последний год по субъектам? Мы, конечно, можем использовать VLOOKUP/XLOOKUP в экселе и всё такое. Но нам встретятся обязательно двойняшки (тройняшки): «г. Москва» и «Город Москва столица Российской Федерации город федерального значения»; «Кемеровская область - Кузбасс» и «Кемеровская область — Кузбасс». Да, мелочи, но неприятно бороться с этими исключениями вручную.

Сравнение различий в наименовании субъектов в ЕМИСС на примере двух показателей:

Уровень безработицы (по методологии МОТ)

Численность пенсионеров, мужчин и женщин

Город Москва столица Российской Федерации город федерального значения

г. Москва

Город Санкт-Петербург город федерального значения

г. Санкт-Петербург

Республика Северная Осетия-Алания

Республика Северная Осетия - Алания

Сибирский федеральный округ

Сибирский федеральный округ

Сибирский федеральный округ

Сибирский федеральный округ (с 03.11.2018)

Кемеровская область - Кузбасс

Кемеровская область

Дальневосточный федеральный округ

Дальневосточный федеральный округ

Дальневосточный федеральный округ

Дальневосточный федеральный округ (с 03.11.2018)

В таблице приведена лишь малая доля тех различий, которые можно встретить.

Все дело в том, что в ЕМИСС хранятся данные по субъектам достаточно хорошо, если взглянуть на SDMX-файлы, которые он любезно предлагает нам вместе с Excel при скачивании. Там есть коды ОКАТО, которые достаточно однозначно укажут на Субъект (в общем, административно-территориальную единицу). Например, 643 — это всегда РФ. Но почему-то справочники, которые хранят текстовое описание кода, например, s_ОКАТО, mОКАТО, spr_subjects_rf, OKSM, s_OKSM пользователю выводят разные текстовые описания (как в случае с «Город Москва столица Российской Федерации город федерального значения» и «г. Москва»).

Сравнение текстовых предоставлений общих кодов ОКАТО в ЕМИСС:

s_ОКАТО (текст)

s_OKSM (текст)

Общий код ОКАТО

Российская Федерация

РОССИЯ

643

Часто возникает необходимость взять не 2 показателя, а 22, 32 и больше. И можно увидеть все возможные словоформы-словосочетания названий субъектов. А ещё — ох уж эти пробелы, двойные, тройные и мои любимые — переменой длины в начале, середине и в конце названий субъектов.

А попробуйте выгрузить все данные по инфляции (Индексы потребительских цен на товары и услуги). Excel закончится и обрежет колонки. А если я хочу csv, json или что-то ещё. А использовать данные в питоне и построить в scikit-learn или statsmodels панельную регрессию. В общем, вы поняли — нужно потратить достаточно много времени и сил, а иногда хочется простого человеческого: просто загрузить данные и посмотреть на корреляцию в перекрестных данных, единичные корни во временных рядах и т.д. — погрузиться в исследование связей и закономерностей. А ни часами сидеть в Excel и исправлять названия субъектов, trim'ить пробелы и удалять не нужные строки, ещё и сводные таблицы не хотят строица нормально, потому что в Excel объединенные ячейки, которые так любят давать пользователю в ЕМИСС.

Другие методологические проблемы уже высшего ранга опустим. Например, у нас есть замечательная динамика по выбросам загрязнений от авто — воздух становится чище! А, нет, это просто методология расчёта поменялась, вот вам и структурный сдвиг.

Источник данных: Объем выбросов вредных(загрязняющих) веществ в атмосферный воздух от автомобильного транспорта (тысяча тонн, значение показателя за год) // ЕМИСС
Источник данных: Объем выбросов вредных(загрязняющих) веществ в атмосферный воздух от автомобильного транспорта (тысяча тонн, значение показателя за год) // ЕМИСС

Обзор работ на Хабр

Что похожего делали на Хабре. Есть замечательная статья, как один парень ЕМИСС спарсил. Получилось у него достаточно интересно. Правда, признается он, что для несведущих в области трехступенчатых SQL-запросов без интерфейса сложновато, однако. Ещё это, конечно, не решит проблемы с разводнением названий субъектов. Справочники-то те же.

Ещё из интересного: как Росстат перешли от эпохи раздробленности муниципалитетов на Руси к единым стандартам и известному нам в сегодняшнем обличии сайту и базам данных (ну, или типа того). Прекрасный вывод в статье они приводят, оставлю прямую цитату на них:

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

Что предлагаю

Недолго думая, будучи экономистов по образованию, написал я небольшой сайт на Vue.js, предварительно спарсив часть важных экономических индикаторов (100 шт.). И разместил его у себя на локальном хостинге для теста с использованием IP-туннелирования через ngrok. Стек, который я использовал Vue.js + backend на Django. База данных в MySQL. Простите за python и MySQL, может не так прекрасно, как хотелось бы, но я не то, чтобы программист со знаниями высших духовных практик.

Как запустить ngrok, локальный хостинг и порадовать коллег небольшим, но полезным приложением (пример на Ubuntu):

Запустим проект на Vue.js:

#!/bin/bash
clear
cd
cd projectee
cd project_vue
npm run serve -- --port 8080

Здесь projectee — папка, в которой лежит project_vue — проект, созданный во Vue.js.

Линкуем ngrok и локальный сервер:

#!/bin/bash
clear
cd
ngrok http --domain=your-free-ngrok-domain-abracadabra.ngrok-free.app http://localhost:8080 --response-header-add='Content-Security-Policy: upgrade-insecure-requests' --host-header=rewrite --scheme http,https --config=first.yml
  • Вместо your-free-ngrok-domain-abracadabra.ngrok-free.app нужно будет указать бесплатный домен, который предоставит Вам ngrok (кликните на сайте в админ-панели на «статический домен»).

  • Вместо http://localhost:8080 укажите Ваш локальный адрес и порт.

  • Вот эти флаги --response-header-add='Content-Security-Policy: upgrade-insecure-requests' и --host-header=rewrite позволят Вам избежать ругающегося браузера на небезопасный SSL-сертификат и CORS-запросы (например, если фронт у Вас на Vue.js, а back — на Django).

  • --config=first.yml, где first.yml — путь до Вашего конфигурационного файла ngrok (создается автоматически при установке ngrok), можно создать несколько таких файлов для нескольких аккаунтов, что поможет обойти ограничение на 1 запущенный сайт at a time.

Собственно сам сайт:

Главная страница сайта
Главная страница сайта

Что может сайт: выбираем нужные нам показатели, хоть 50 шт. за раз:

Поиск и выбор показателей
Поиск и выбор показателей

Если нужно вспомнить методологию, можно кликнуть на знак «?», и в боковой панели откроется паспорт показателя:

Паспорт показателя
Паспорт показателя

Обновленная страничка показателя на примере коэффициента Джини:

Страница показателя
Страница показателя

Далее формируем нужное нам представление: временные ряды, перекрёстные, панелька — пожалуйста! Для этого есть авто-шаблоны. Если так не любо, можно с помощью drag-and-drop интерфейса разместить атрибуты показателей по секциям — принцип абсолютно тот же, что и в сводных таблицах экселя:

Сводная таблица drag-and-drop
Сводная таблица drag-and-drop

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

Разместим элементы таблицы
Разместим элементы таблицы

И воуля — получаем результат:

Результат построения сводной таблицы (пример: временные ряды)
Результат построения сводной таблицы (пример: временные ряды)

В чем преимущества?

С дублированием 100500 справочников регионов (ОКАТО) я покончил, убрал их и заменил одним общим, теперь субъекты называются единообразно в соответствии с нормативными документами. Без лишних символов и вариаций в названии. А объединять показатели по 10-20-30 штук — гораздо быстрее, чем вручную сводить 10-20-30 файлов эксель.

Теперь строить данные быстро и легко мне. И не только мне, но и коллегам-экономистам. Как говорится, одной регрессией сыт не будешь, нужно и ЕМИСС починить, а уже после заниматься экономистскими делами — считать там деньги или детерминировать зависимость между инфляцией и безработицей и строить кривую Филлипса.

Комментарии (4)


  1. Gulenkov112
    03.05.2024 14:26
    +1

    Очень круто! Не знаю, научится когда-нибудь Росстат делать единообразные названия регионов/ОКВЭДов и прочего в разных наборах данных, или нет - проблема действительно фантастически мешает работать с данными. Я в какой-то момент тоже написал себе локальный парсер ЕМИСС и Showdata (выкачивает показатель "целиком", вся фильтрация - только после в предпочитаемой среде) - работать стало легче.

    Одна проблема: ЕМИСС должны скоро вывести из эксплуатации, и на смену ему придет новый неведомый зверь. Знаю, что у нас коллеги во ВШЭ как-то участвовали в разработке концепции этого сервиса. Мы с командой, как потенциальные пользователи, очень настаивали на важности нормального API. Насколько в итоге прислушались, не уверен, но иллюзий не строю...


    1. create_your_view Автор
      03.05.2024 14:26

      Благодарю Вас за комментарий! Интересное замечание про API, это было бы действительно удобно для исследователей, которые сейчас используют R и Python для анализа данных. Хотелось бы посмотреть на их нового "зверя", насколько там преодолеют существующие проблемы ЕМИСС и Росстат.


  1. conopus
    03.05.2024 14:26

    Коммерциализировать не планирует?


    1. create_your_view Автор
      03.05.2024 14:26

      Такого решения принято ещё не было. В начальной стадии хотелось бы вывести проект из-под локального хостинга в открытое public тестирование.