Пришла пора поговорить о качестве данных собираемых органами власти. Забегая вперёд скажу что она невысокая, в качестве примера рассмотрим
свежеопубликованный [1]
Минэкономразвития список системообразующих предприятий. его можно скачать напрямую в
Excel [2].
Посмотрев на этот список внимательно, можно обратить внимание что на какие-то самые очевидные проблемы, когда указан ИНН организации с размером меньше на один символ, но даже беглая автоматизированная проверка показала что там не только с этим плохо.
Поскольку я хочу, в дальнейшем, этот кейс использовать как обучающий, дальше буду объяснять максимально подробно, надеюсь тем кто умеет работать с данными будет не очень скучно;)
Краткие выводы (Executive Summary)
В 4,3% записей в списке системообразующих предприятий содержатся ошибки, включая
- у 31 организации, неверно указан код ИНН (опечатка или ошибка форматирования с потерей первого символа)
- у 12 организаций указано устаревшее название, как правило ОАО или ЗАО вместо АО
- у 6 организаций те или иные ошибки в их наименовании, опечатки смысловые и иные
- у 2 организаций указаны реквизиты других существующих организаций, ошибки которые невозможно совершить опечатками
Причины этого в низкой культуре работы с данными в Минэкономразвития России, отсутствии мер по проверки поступающих им данных.
Методика
Итак, какие правила валидации сведений об организациях обычно применяют:
- проверка кодов реквизитов (ИНН и ОГРН), в нашем случае у организаций есть только коды ИНН
- корректность названия организации, разделяется на (устаревшее название, ошибка в названии)
- указание неверной организации, когда реквизиты и название организаций ошибочны. Например, ИНН указывает на одну, а название на совершенно другую.
Входящие данные и их подготовка
Что у нас есть на входе,
Excel файл [2] со списком организаций, однако в поле ИНН по некоторым из них вписано до двух кодов, а то есть юр. лиц у нас как минимум больше на эти дополнительные коды.
1. Проводим перестройку списка и получаем на выходе список из 1173 организаций (у 22 записей были по 2 кода ИНН, так что и получается 1151 + 22 = 1173), остальные значения в строках для добавленных записей оставляем прежними.
Всё это делается автоматически, коды ИНН в колонке "ИНН" разделены запятыми.
2. Преобразуем всё в CSV файл, нормируем названия полей в англоязычный формат (удобнее для обработки и большая стандартизация названий)
3. Делаем очистку поля ИНН от пробелов, "тримминг" так чтобы остались только значения цифр.
В итоге получаем CSV файл пригодный для последующего обогащения данными
Начальная проверка
Полученного нормализованного файла достаточно чтобы провести первую, быструю проверку. В репозитории утилиты Undatum есть код проверки ИНН [3], достаточно выполнить функцию _check_inn и сохранить результаты в новом CSV файле c колонкой valid_inn.
После проверки у нас должно получиться 31 ИНН не проходящих валидацию. У 4-х кодов будут опечатки в цифрах и у 27 кодов ошибка при форматировании, "съеден" ноль в численном значении, поскольку Excel часто считает что в колонке ИНН указано число, а не численная строка, то удаляет нули. Но грамотные Excel пользователи это знают и за таким следят.
После начальной проверки переходим к углублённой и для этого обогатим данные.
Обогащение данных
Для анализа нам необходимо:
a) Проверить реквизиты, в нашем случае код ИНН, уже сделано, данные новые тут не нужны
б) Проверить названия организаций, для чего нам нужны другие названия этой организации которые можно взять в статрегистре Росстата (обновляется раз в год, может быть устаревшим) и в ЕГРЮЛе (всегда актуально).
в) Возможно нам в будущем понадобятся другие данные, поэтому почему бы нам не добавить из ЕГРЮЛа ещё и код ОГРН, он поможет сопоставить с другими реестрами и основной код ОКВЭД, вдруг мы захотим проверить как отрасль указанная в списке соответствует основной деятельности организации.