Анализ региональных бюджетов
Практический разбор ниже опирается на воспроизводимый приём из ноутбука regbudgets-roskazna.ipynb в репозитории ivbeg/runotebooks: пакетная обработка годовых файлов формы 0503317 по консолидированным бюджетам субъектов, извлечение итога по расходам и долей по видам расходов (в ноутбуке — поле vr, по смыслу соотносится с агрегированными блоками отчёта и с КВР в бюджетной классификации). Для сквозного маршрута «витрина субъекта → 0503317 → проверки» см. отдельный кейс исполнения бюджета субъекта. Имеет смысл читать этот how-to вместе с карточкой консолидированный бюджет: свод не равен только «закону о бюджете субъекта».
Зачем так делают
- Один источник на все субъекты — публикации Федерального казначейства в разделе консолидированные бюджеты субъектов (см. также страницу раздела на портале).
- Сопоставимый разрез по экономике расходов — например, доля строк с видом 200 («закупка товаров, работ, услуг») в итоге по расходам даёт грубый межрегиональный индикатор масштаба закупочного контура в отчётной вёрстке; для сопоставления с контрактами ЕИС используйте анализ закупок.
- Панель по годам требует явно учесть, что макет Excel и имя файла менялись (до 2016 года и после): иначе нельзя безопасно стыковать регионы и годы.
Подготовка данных
- Скачайте нужные годовые отчёты 0503317 по каждому субъекту с витрины Казначейства и сложите их по одной папке на год (как в ноутбуке:
files/2016/,files/2018/и т.д.). - Для повторяемости старых лет в ноутбуке используется готовый архив выгрузок на cdn.ruarxive.org (
regbudgets_2014_2020.zip— см. описание в репозитории). Это не официальный канал обновлений; для актуальных цифр всегда сверяйтесь с первоисточником наroskazna.gov.ru. - Зависимости из ноутбука: 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 при спорной методике.
Связанные материалы
- Форма 0503317 — назначение отчёта и разрезы.
- Консолидированные бюджеты субъектов РФ — откуда брать файлы.
- Исполнение консолидированных бюджетов субъектов (портал) — контекст раздела «Исполнение бюджетов».
- Минфин: исполнение консолидированных бюджетов субъектов — агрегаты для сверки.
- КВР — что такое «вид расходов» в классификации, если углублять разрез.
- КВР 630 и 631–634 — субсидии НКО в отчётности — макро-коды поддержки НКО в исполнении.
- Государственные и подведомственные НКО — как читать крупных получателей при анализе 630.
- Региональные бюджеты — план и законы о бюджете для сопоставления с казначейским фактом.
- Анализ закупок и финансирование НКО — смежные сценарии по смыслу показателей 200 и 630.
- Анализ исполнения бюджета — федеральный контур тех же форм исполнения.
- Исходный код и пошаговые ячейки: regbudgets-roskazna.ipynb в репозитории ivbeg/runotebooks.