5 мая 2012 г.

Получение подробных данных по бюджетам субъектов РФ

Большую часть экономики составляет бюджетный сектор. В прошлом году расходы консолидированного бюджета РФ составили чуть больше 20 трлн рублей (около 37% ВВП), из них на федеральный бюджет пришлось почти 11 трлн рублей, остальное - внебюджетные фонды, бюджеты субъектов РФ и муниципальные бюджеты.
Не так давно встала задача с получением и анализом довольно подробных данных по бюджетам отдельных субъектов РФ. Основным источником информации является отчетность Федерального Казначейства, который ежемесячно предоставляет данные об исполнении бюджетов. В случае федерального бюджета за каждый месяц - это стандартный набор файлов Excel.
Для региональных бюджетов - все гораздо сложнее. Казначейство выкладывает огромный архив (данные за каждый месяц в архиве занимают более 10 мегабайт) html-файлов. Структура данных простая: "регион-бюджетная форма отчетности" - отдельный файл.
Министерство финансов проводит некоторую аналитическую работу и предоставляет те же данные в более удобоваримом виде. Однако в случае данных Минфина возникает две проблемы:

  1. Набор показателей включает в себя базовые вещи вроде общих расходов и доходов регионального бюджета, но набор специфических показателей достаточно скуден. 
  2. Данные начинаются с февраля 2011 года, хотя Казначейство дает информацию аж с 2000 года. 

Что делать, если нужны подробные данные и длинная история? Как обычно, если цифр немного, то проще всего собрать цифры ручками. В противном случае, приходится "изобретать велосипед" и пытаться автоматизировать процесс, так как источники информации мало заботятся о нуждах простых аналитиков.
Когда возникла подобная необходимость, я написал набор скриптов на Python, которые обрабатывали предварительно сохраненные на локальном диске папки с исходными файлами. На каждый год я создавал отдельный скрипт для того, чтобы можно было посмотреть исходные данные. К  сожалению, из-за того, что коды бюджетной классификации регулярно меняются, как и формат предоставления данных. Поэтому скрипт, написанный для данных 2010 года, потребует, незначительной "подкрутки" для того, чтобы работать на данных 2006 года.
Для обработки html файлов я использовал отличную библиотеку Beautiful Soup. Парсинг файлов занимает относительно много времени (около 30-40 секунд для отдельного файла), поэтому скрипт работает довольно долго (около 10-15 минут на моем компьютере). Но так как он работает сам по себе, в это время можно заниматься другими полезными вещами.
  
Исходные коды, если кому-то пригодятся (так как я не программист, то код, видимо, не самый оптимальный):