Вместо актуальности
Меня зовут Александр, я активно исследую экономические данные, строю регрессии, 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 интерфейса разместить атрибуты показателей по секциям — принцип абсолютно тот же, что и в сводных таблицах экселя:
Построим временной ряд для всех выбранных показателей:
И воуля — получаем результат:
В чем преимущества?
С дублированием 100500 справочников регионов (ОКАТО) я покончил, убрал их и заменил одним общим, теперь субъекты называются единообразно в соответствии с нормативными документами. Без лишних символов и вариаций в названии. А объединять показатели по 10-20-30 штук — гораздо быстрее, чем вручную сводить 10-20-30 файлов эксель.
Теперь строить данные быстро и легко мне. И не только мне, но и коллегам-экономистам. Как говорится, одной регрессией сыт не будешь, нужно и ЕМИСС починить, а уже после заниматься экономистскими делами — считать там деньги или детерминировать зависимость между инфляцией и безработицей и строить кривую Филлипса.
Комментарии (4)
conopus
03.05.2024 14:26Коммерциализировать не планирует?
create_your_view Автор
03.05.2024 14:26Такого решения принято ещё не было. В начальной стадии хотелось бы вывести проект из-под локального хостинга в открытое public тестирование.
Gulenkov112
Очень круто! Не знаю, научится когда-нибудь Росстат делать единообразные названия регионов/ОКВЭДов и прочего в разных наборах данных, или нет - проблема действительно фантастически мешает работать с данными. Я в какой-то момент тоже написал себе локальный парсер ЕМИСС и Showdata (выкачивает показатель "целиком", вся фильтрация - только после в предпочитаемой среде) - работать стало легче.
Одна проблема: ЕМИСС должны скоро вывести из эксплуатации, и на смену ему придет новый неведомый зверь. Знаю, что у нас коллеги во ВШЭ как-то участвовали в разработке концепции этого сервиса. Мы с командой, как потенциальные пользователи, очень настаивали на важности нормального API. Насколько в итоге прислушались, не уверен, но иллюзий не строю...
create_your_view Автор
Благодарю Вас за комментарий! Интересное замечание про API, это было бы действительно удобно для исследователей, которые сейчас используют R и Python для анализа данных. Хотелось бы посмотреть на их нового "зверя", насколько там преодолеют существующие проблемы ЕМИСС и Росстат.