Перейти к основному содержимому

Анализ региональных бюджетов

Практический разбор ниже опирается на воспроизводимый приём из ноутбука regbudgets-roskazna.ipynb в репозитории ivbeg/runotebooks: пакетная обработка годовых файлов формы 0503317 по консолидированным бюджетам субъектов, извлечение итога по расходам и долей по видам расходов (в ноутбуке — поле vr, по смыслу соотносится с агрегированными блоками отчёта и с КВР в бюджетной классификации). Для сквозного маршрута «витрина субъекта → 0503317 → проверки» см. отдельный кейс исполнения бюджета субъекта. Имеет смысл читать этот how-to вместе с карточкой консолидированный бюджет: свод не равен только «закону о бюджете субъекта».

Зачем так делают

  • Один источник на все субъекты — публикации Федерального казначейства в разделе консолидированные бюджеты субъектов (см. также страницу раздела на портале).
  • Сопоставимый разрез по экономике расходов — например, доля строк с видом 200 («закупка товаров, работ, услуг») в итоге по расходам даёт грубый межрегиональный индикатор масштаба закупочного контура в отчётной вёрстке; для сопоставления с контрактами ЕИС используйте анализ закупок.
  • Панель по годам требует явно учесть, что макет Excel и имя файла менялись (до 2016 года и после): иначе нельзя безопасно стыковать регионы и годы.

Подготовка данных

  1. Скачайте нужные годовые отчёты 0503317 по каждому субъекту с витрины Казначейства и сложите их по одной папке на год (как в ноутбуке: files/2016/, files/2018/ и т.д.).
  2. Для повторяемости старых лет в ноутбуке используется готовый архив выгрузок на cdn.ruarxive.org (regbudgets_2014_2020.zip — см. описание в репозитории). Это не официальный канал обновлений; для актуальных цифр всегда сверяйтесь с первоисточником на roskazna.gov.ru.
  3. Зависимости из ноутбука: pandas, xlrd (чтение старых .xls), при необходимости tabulate для вывода. Для новых .xlsx понадобится openpyxl (или конвертация в единый формат на входе пайплайна).

Что извлекается из файла (логика)

В 0503317 несколько листов: в ноутбуке имя субъекта читается с одного листа (координата ячейки зависит от года), а таблица видов расходов — со следующего листа. Дальше по строкам:

  • ищется строка-опорный итог по расходам (в ноутбуке — строка, где во втором столбце встречается код 200 в смысле «всего расходов» отчёта, а не КВР 200; это идентификатор строки свода в той вёрстке года — перед переносом на другие годы откройте один файл и проверьте совпадение по подписи строки);
  • из той же строки берётся знаменатель «всего» из фиксированного столбца (в ноутбуке для разных годов это 6-й или 7-й столбец — нумерация с нуля в xlrd: колонки 6 или 7);
  • для строк с кодом вида в шестом столбце (row[5] в коде) не меньше 100 накапливаются суммы из столбца суммы; для каждого вида считается доля от знаменателя.

Так в ноутбуке получают, например, долю закупок (вид 200) по каждому региону за год и сортируют субъекты по vr_share.

Стыковка регионов между годами

В ноутбуке отдельно подсвечена проблема подписи: в 2016 в шапке могло быть «Республика Башкортостан», а в 2018+«МИНИСТЕРСТВО ФИНАНСОВ …»; сопоставлять панель по полному тексту строки нельзя.

Рабочий приём из ноутбука:

  • в старых именах (0503317-3_fo_001-2582480.xls) код субъекта извлекается из фрагмента вида 001 после префикса;
  • в новых (01_01.01.2019_0503317.xls) — первые символы до подчёркивания (01, 41, …) как тот же порядковый код;
  • по одному опорному году (в ноутбуке — 2020) строится словарь regcode → нормализованное имя бюджета с первого листа, и дальше все годы склеиваются по regcode, а не по «человеческому» названию из шапки.

Исключайте служебные файлы вроде сводного отчёта (в примере ноутбука — код 95 в имени): иначе в выборку попадёт не субъект, а агрегат по РФ.

Параметры, зависящие от года

Один и тот же алгоритм в ноутбуке вызывается с разными аргументами: индекс листа с названием, координаты ячейки субъекта, номер столбца суммы, флаг «старый / новый» формат имени файла. При переносе на новые годы после 2020 снова откройте несколько файлов и сверьте: листы, строка «всего», столбцы сумм и кодировка чисел (пробелы, неразрывный пробел \xa0, запятая как десятичный разделитель — в ноутбуке это очищается строковыми заменами перед int/float).

После извлечения: pandas

Когда список словарей по файлам собран, в ноутбуке строится единый DataFrame (year, regcode, region, vr, total, vr_value, vr_share, при полной выгрузке ещё vr_name), дальше — фильтры по regcode и году, сортировки, своды по виду 630 (и при необходимости 631–634 в годах после детализации классификации — см. КВР 630 и 631–634) в классификации отчёта и т.д. Для трактовки 630, НКО и государственных и подведомственных НКО см. финансирование НКО.

Сверка с законом субъекта об исполнении бюджета

Файлы 0503317 с портала Казначейства — казначейский свод консолидированного бюджета субъекта. Закон (решение) об исполнении бюджета субъекта или отдельного муниципалитета может быть свёрстан иначе (другая подача итогов, сроки закрытия года, приложения только в PDF). В исследовательской практике отмечали расхождения между суммой по виду 630 в выгрузке 0503317 и величиной той же экономической группы в официальном тексте закона об исполнении для одного и того же года — перед выводами согласуйте оба источника и зафиксируйте, какой документ вы берёте за «эталон» для публичного сравнения.

  • Глубина детализации в законе об исполнении различается: где-то в открытой части виден только агрегат 600 («субсидии» в широком смысле, вместе с иными получателями), без строки 630; тогда нельзя подменять региональную политику сравнениями «только по 630» из Казначейства без методической оговорки (см. КВР 630 и 631–634).
  • Крупные суммы по 630 часто концентрируются у небольшого числа получателей; интерпретация «кто именно» требует микроданных и ЕГРЮЛ, а не только строки свода.

Входные данные

  • Конкретные файлы, URL, коды периодов и реквизиты перечислены в разделах ниже; зафиксируйте дату выгрузки для воспроизводимости.

Инструменты

  • Браузер и/или среда из разделов ниже (Python, Excel, SQL, CLI) — в зависимости от выбранного пути.

Шаги

Выполняйте действия в порядке разделов ниже (от подготовки данных к проверке).

Воспроизводимый пример

Минимальный пример команды или кода приведён в соответствующем блоке ниже; подставьте свои параметры.

Проверка результата

Сверьте итоги с официальной отчётностью, контрольными суммами или sanity-check из текста выше.

Подводные камни

  • Смена вёрстки ломает «универсальную» функцию: закладывайте версионирование правил по годам, а не одну жёсткую сетку столбцов.
  • Расхождение кодов в ноутбуке и официальных перечнях субъектов: префикс в имени файла — это порядок публикации Казначейства, его нужно проверить на справочнике кода субъекта; при сомнениях сверяйте с ОКТМО/реестром субъектов и с подписью бюджета на листе опорного года.
  • Консолидированный свод включает местные бюджеты и ТФОМС — нельзя называть результат «расходами областной администрации» без оговорки.
  • xlrd ≥ 2 не читает .xlsx; смешанный корпус .xls / .xlsx требует ветвления по расширению или предварительной конвертации.
  • Сводные XLSX Минфина (subbud/execute) удобны для обзора, но не заменяют построчную проверку по 0503317 при спорной методике.

Связанные материалы