MyNixOS website logo
Description

Unofficial API for Fedstat (Rosstat EMISS System) for Automatic and Efficient Data Queries.

An API for automatic data queries to the fedstat <https://www.fedstat.ru>, using a small set of functions with a common interface.

fedstatAPIr

fedstatAPIr представляет собой неофициальное API для загрузки данных с fedstat.ru (система ЕМИСС Росстата) с заданными фильтрами.

Пакет позволяет сэкономить ⏳ и нервы 😡 при работе с бесконечно падающим ЕМИСС через автоматическое повторение неотвеченных запросов и сохранение ранее использованных настроек фильтров.

Установка

На данный момент пакет доступен только на R, Вы можете загрузить fedstatAPIr из CRAN, используя следующую команду в R:

install.packages("fedstatAPIr")

Версия для разработки может быть загружена следующей командой:

# install.packages("devtools")
devtools::install_github("DenchPokepon/fedstatAPIr")

Использование

Загрузим данные по инфляции к предыдущему месяцу и к соотв. месяцу прошлого года за январь 2023 года по всем товарам и услугам только по России

Возьмем номер индикатора из URL веб страницы с данными https://fedstat.ru/indicator/31074

library(fedstatAPIr)
data <- fedstat_data_load_with_filters(
  indicator_id = "31074",
  filters = list(
    "Классификатор объектов административно-территориального деления (ОКАТО)" = "Российская Федерация",
    "Виды показателя" = c(
      "К соответствующему периоду предыдущего года",
      "К предыдущему месяцу"
    ),
    "Период" = "Январь",
    "Год" = "2023",
    "Виды товаров и услуг" = "*"
  )
)
EIObsValuePERIODTimes_POKs_grtovs_OKATOs_OKATO_codes_POK_codes_grtov_code
процент100.84январь2023К предыдущему месяцуВсе товары и услугиРоссийская Федерация643441
процент111.77январь2023К соответствующему периоду предыдущего годаВсе товары и услугиРоссийская Федерация64391
процент100.78январь2023К предыдущему месяцуВсе товарыРоссийская Федерация643442
процент111.15январь2023К соответствующему периоду предыдущего годаВсе товарыРоссийская Федерация64392
процент100.30январь2023К предыдущему месяцуБазовый индекс потребительских ценРоссийская Федерация643443
процент113.72январь2023К соответствующему периоду предыдущего годаБазовый индекс потребительских ценРоссийская Федерация64393

Необходимо учитывать, что ЕМИСС часто лагает, поэтому не стоит загружать больше 500 тысяч строк за один запрос. В случае большой выгрузки желательно разбить запросы на подзапросы, в ином случае ЕМИСС может игнорировать такие большие запросы

Спецификация фильтров

Фильтры задаются в форме JSON:

{
 "Название поля фильтра 1": ["Значение фильтра 1", "Значение фильтра 2"],
 "Название поля фильтра 2": ["Значение фильтра 1", "Значение фильтра 2"],
 ...
}

Где Название поля фильтра 1 может быть, например Год, а Значение фильтра 1 для этого поля 2023.

Поля и значения фильтров берутся прямо из названий фильтров на fedstat.ru, в filters они должны быть такими же. Однако разные регистры фильтров и лишние пробелы не сломают фильтрацию.

Доступны следующие специальные значения фильтров:

  1. Звездочка/asterix (*) выбирает все данные по этому полю фильтра.

Можно не указывать какой-то фильтр вообще, тогда по умолчанию будет использоваться *.

Доступные индикаторы

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

Внутри пакета доступна база данных всех индикаторов, по которым представлены данные на fedstat.ru. Она содержится в переменной fedstat_indicators_names_database.

Все доступные фильтры каждого индикатора можно посмотреть через вызов функции

data_ids <- fedstat_get_data_ids("31074")

Результат выглядит следующим образом

filter_field_idfilter_field_titlefilter_value_idfilter_value_titlefilter_field_object_ids
0Показатель31074Индексы потребительских цен на товары и услугиfilterObjectIds
3Год20022002columnObjectIds
3Год20032003columnObjectIds
3Год20042004columnObjectIds
3Год20052005columnObjectIds
3Год20062006columnObjectIds

Также можно посмотреть полный внутренний словарь (соотношения кодов и человеческих названий сущностей) через задание аргумента return_type = dictionary

library(fedstatAPIr)
data <- fedstat_data_load_with_filters(
  indicator_id = "31074",
  filters = list(
    "Классификатор объектов административно-территориального деления (ОКАТО)" = "Российская Федерация",
    "Виды показателя" = c(
      "К соответствующему периоду предыдущего года",
      "К предыдущему месяцу"
    ),
    "Период" = "Январь",
    "Год" = "2023",
    "Виды товаров и услуг" = "*"
  ),
  return_type = "dictionary"
)

Продвинутое использование

Функция fedstat_data_load_with_filters является оберткой из отдельных функций, которые отвечают за:

  1. Загрузку id фильтров через GET запрос (fedstat_get_data_ids);
  2. Фильтрацию данных на основе filters с учетом специальных значений и стандартных фильтров (fedstat_data_ids_filter);
  3. Отправку POST запроса с телом из фильтров (fedstat_post_data_ids_filtered);
  4. Парсинг полученного SDMX файла в таблицу (fedstat_parse_sdmx_to_table).

По каждой функции доступна подробная документация, которую можно вызвать в R через функцию help(). Например help("fedstat_data_load_with_filters") или ?fedstat_data_load_with_filters.

Загрузим те же данные, используя каждую функцию отдельно

data_ids <- fedstat_get_data_ids("31074") # Можеть занимать много времени из-за лагов
# fedstat, для скорости лучше всего кэшировать или даже записывать в базу данных,
# более подробно по этому моменту в документации

data_ids_filtered <- data_ids %>%
  fedstat_data_ids_filter(
    filters = list(
      "Классификатор объектов административно-территориального деления (ОКАТО)" = "Российская Федерация",
      "Виды показателя" = c(
        "К соответствующему периоду предыдущего года",
        "К предыдущему месяцу"
      ),
      "Период" = "Январь",
      "Год" = "2023",
      "Виды товаров и услуг" = "*"
    )
  )

data_sdmx_parsed <- data_ids_filtered %>%
  fedstat_post_data_ids_filtered(data_format = "sdmx") %>%
  fedstat_parse_sdmx_to_table()

data_xls_binary <- data_ids_filtered %>%
  fedstat_post_data_ids_filtered(data_format = "excel") # также можем загружать excel

writeBin(data_xls_binary, "data.xls") # также можем записать в xls файл.
# Его формат зависит от колонки filter_field_object_ids в data_ids, можно изменять самостоятельно

Помощь

Вопросы можно писать на почту [email protected]


Разработка

Буду рад Вашему вкладу в проект. Перед коммитом изменений необходимо пройти R CRAN check –as-cran.

Metadata

Version

1.0.3

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows