Расшифровка КБК
Зачем и для кого
Инструкция для аналитиков и разработчиков, которым нужно из одной колонки с двадцатью цифрами получить читаемые разрезы (ведомство, функциональное направление, КВР и т.д.) или полное наименование строки бюджетной классификации. КБК всегда 20 цифр, но разметка позиций различается для доходов, расходов и источников финансирования дефицита; год справочника должен совпадать с годом данных.
Входные данные
- Строка кода — ровно 20 цифр после нормализации (пробелы внутри значения, артефакты Excel и см. pandas: КБК).
- Финансовый год наблюдения — перечень допустимых кодов и наименования меняются приказами Минфина (ориентир — приказы по бюджетной классификации).
- Тип кода — доход / расход / источники финансирования дефицита: из паспорта набора, названия колонки, формы отчётности или соседних полей; не выводите тип из одной только строки цифр.
- Справочник — строки полного КБК из открытых данных Минфина на выбранный год и тип, либо отдельные справочники составных частей (если строите разрез вручную).
Инструменты
- Браузер — поиск набора «КБК» в каталоге на
minfin.gov.ru(см. карточку источника). - Python 3 с pandas для CSV и джойнов; при скачивании с витрины — осмысленный
User-Agent(см. how-to по каталогу Минфина). - Excel или SQL — те же шаги: нормализация ключа, тип года,
VLOOKUP/JOINпо 20-значной строке.
Шаги
- Нормализуйте код до 20 цифр одной строкой без пробелов; храните как текст, чтобы не терять ведущие нули.
- Зафиксируйте тип кода (доход / расход / ИФД) и год; отдельно скачайте справочник того же типа и года.
- Предпочтительно: выполните
JOINфакта к таблице полного справочника КБК по нормализованному ключу — в одном шаге получите официальное наименование строки (и при необходимости дополнительные колонки из файла Минфина). - Если нужны разрезы: разрежьте строку на подполя по схеме года (для расходов и доходов — таблицы в кодах расходов и кодах доходов; для ИФД ориентируйтесь на приказ на год и смысл блока дефицита) и джойньте каждую часть к соответствующему справочнику.
- Проверьте долю строк без совпадения (
left_onlyприmergeв pandas), сверку сумм до и после джойна и отсутствие дубликатов ключа в справочнике.
Воспроизводимый пример
Разбор расходного кода по позициям (схема как в кодах расходов): первые три знака — главный администратор, затем раздел и подраздел ФКР, десять знаков целевой статьи, последние три — КВР.
def split_expense_kbk(kbk: str) -> dict[str, str]:
s = kbk.strip().replace(" ", "")
if len(s) != 20 or not s.isdigit():
raise ValueError("Ожидается 20 цифр после нормализации")
return {
"kbk": s,
"main_admin": s[0:3],
"fkr_section": s[3:5],
"fkr_subsection": s[5:7],
"target_article": s[7:17],
"kvr": s[17:20],
}
parts = split_expense_kbk("07104010201081000110")
for k, v in parts.items():
print(f"{k}: {v}")
# main_admin -> 071; kvr -> 110 (пример; наименования — только из справочника года)
Полное наименование той же строки без ручного слайсинга — через строку справочника КБК того же года в CSV с витрины Минфина (загрузка каталога — minfin-api).
Проверка результата
- После джойна к полному справочнику нет (или объяснимо мало) строк с отсутствующим кодом; встречающиеся «битые» ключи сверьте с исходным полем и нормализацией.
- При разборе по полям длины срезов в сумме дают 20, а значения подполей существуют в соответствующих справочниках года.
- Суммы показателей по исходной таблице совпадают с суммами после джойна (если в справочнике одна строка на код; иначе сначала дедуплицируйте справочник).
Ограничения и типовые ошибки
- Разный тип в одной таблице — смешение доходного и расходного КБК в одной агрегации даёт бессмысленные итоги; фильтруйте по типу до джойна.
- Год справочника не совпадает с годом факта — «почти верные» наименования и массовые несовпадения ключей.
- Числовой импорт в Excel обрезает старшие разряды или даёт научную запись — держите КБК как строку.
- ИФД — не подставляйте схему расходного слайсинга «по привычке»; разряды читают по отдельной классификации источников финансирования дефицита в приказе на год.
- Дубликаты в справочнике на один код размножают строки факта при
merge— используйтеindicator=Trueв pandas илиCOUNTв SQL.
Связанные страницы
- КБК (глоссарий) — определение, три типа кода, связь с данными.
- Коды расходов и коды доходов — таблицы позиций 1–20 по типу.
- Целевые статьи расходов — расшифровка 10 знаков в середине расходного кода.
- Обзор бюджетной классификации — четыре части классификации и роль КОСГУ.
- Открытые данные Минфина России и доступ к каталогу — откуда брать файлы справочников.
- Pandas: КБК и join — нормализация и контроль
left_only.