Skip to content

Latest commit

 

History

History
199 lines (152 loc) · 12.2 KB

README.md

File metadata and controls

199 lines (152 loc) · 12.2 KB

Аналіз даних spending.gov.ua

Транзакції, що надаються порталом використання публічних коштів мають наступні поля:

Ідентифікатор Назва
trns_id № трансакції
doc_datd складання
msrprd_date оплата
doc_nazn призначення платежу
doc_sq сума
payer_nm платник
payer_edrpou код ЄДРПОУ платника
payer_mfo_knw_id МФО банку платника
payer_mfo_nm Банк платника
recipt_nm одержувач
recipt_edrpou код ЄДРПОУ одержувача
recipt_mfo_knw_id МФО банку одержувача
recipt_mfo_nm Банк одержувача

Фільтрація призначення платежу та ЄДРПОУ

Для забезпечення таємниці персональних даних, дані, що публікуються порталом, піддаються наступним правилам фільтрації:

  1. Фільтрація операцій звичаних установ: здійснється лише якщо установа при реєстрації фінансових зобов’язань поставила відмітку про наявність персональних даних.
  2. Фільтрація операцій фондів чи виконавчої служби, які проводяться без реєстрації фінансових зобов’язань, проводиться автоматично.
  3. Під час застосування фільтрації усі послідовності цифр довжиною від 4 символів замінюються на "х". На жаль, помилково на "x" замінюються коди бюджетних класифікацій та роки.
  4. Фільтрація ЄДРПОУ ФОПів здійснюється безумовно. Усі 10 цифр коду замінюються на "x".

(записано зі слів учасника проекту Edata)

Засоби аналізу

Для аналізу використовуймо мову R:

transactions <- read.csv('transactions.csv')

Аналіз за датою оплати

Файл transactions.csv містить трансакції з номерами 373881-495880, що відповідають наступним датам:

> levels(transactions[,c("msrprd_date")])
[1] "14.09.2015" "15.09.2015" "16.09.2015" "18.09.2015"

Об’єм

Згрупувавши за датою можна визначити об’єм транзакцій за день:

> data.frame(table(transactions$msrprd_date))
        Var1  Freq
1 14.09.2015 28339
2 15.09.2015 81285
3 16.09.2015 12375
4 18.09.2015     1

Бачимо, що на перший день роботи spending.gov.ua значно менше транзакцій, ніж на наступний день. Це може свідчити про те, що сайт запущено у другій половині дня. Чи про те, що у цей день був менш нагруженим. У будь-якому випадку ми не можемо нічого сказати про середню кількість сплат за день чи про якусь динаміку. Можна лише сказати про порядок.

Бачимо, що за день здійснюється порядку 100 000 операцій.

Аномалія

Тут можна помітити аномалію: "18.09.2015"

> transactions[transactions$msrprd_dat=="18.09.2015",]
      trns_id   doc_datd msrprd_date
96303  470183 15.09.2015  18.09.2015
                                                                                   doc_nazn
96303 Повернення надлишково перерахованих коштів за брухт зг.листа 115/09-15 від 03.09.xxxx
                            payer_nm      recipt_nm doc_sq payer_edrpou
96303 ФСС від нещ. випадків (Доходи) ТОВ "УКР-ЄВРО"  310.5     25939770
      recipt_edrpou recipt_mfo_knw_id                          recipt_mfo_nm
96303      30743156            315405 ХМ.Ф.ЗАТ КБ"ПРИВАТБАНК" М.ХМЕЛЬНИЦЬКИЙ
      payer_mfo_knw_id                  payer_mfo_nm
96303           815013 ГУДКСУ у Хмельницькiй областi

Тобто, якщо транзакціям присвоюються послідовні номери, то дати оплати повинні постійно зростати. Тут же ми бачимо, что транзакція із датою 18.09.2015 потрапила поміж транзакцій з датою 15.09.2015, що може свідчити про помилку набору чи про редагування даних.

Назви та МФО банків

Транзакції, що надаються - це виключно платежі Державної казначейської служби та їх філіалів. Тобто, це усі ті трансакції, де банк платнику - ДКСУ:

payer_mfos <- transactions[,c("payer_mfo_knw_id", "payer_mfo_nm")]
levels(payer_mfos[,2])
 [1] ""                                    "ГУДКСУ в Iвано-Франкiвськiй області"
 [3] "ГУДКСУ в Одеській області"           "ГУДКСУ у Вінницькій області"        
 [5] "ГУДКСУ у Волинській області"         "ГУДКСУ у Дніпропетровській області" 
 [7] "ГУДКСУ у Донецькiй областi"          "ГУДКСУ у Житомирській області"      
 [9] "ГУДКСУ у Закарпатській областi"      "ГУДКСУ у Запорiзькiй областi"       
[11] "ГУДКСУ у Київській області"          "ГУДКСУ у Кіровоградській області"   
[13] "ГУДКСУ у Луганській області"         "ГУДКСУ у Львiвськiй областi"        
[15] "ГУДКСУ у Миколаївськiй областi"      "ГУДКСУ у м.Києві"                   
[17] "ГУДКСУ у Полтавській областi"        "ГУДКСУ у Рiвненськiй областi"       
[19] "ГУДКСУ у Сумській області"           "ГУДКСУ у Тернопільській областi"    
[21] "ГУДКСУ у Харківській області"        "ГУДКСУ у Херсонській області"       
[23] "ГУДКСУ у Хмельницькiй областi"       "ГУДКСУ у Черкаськiй областi"        
[25] "ГУДКСУ у Чернiвецькiй областi"       "ГУДКСУ у Чернігівській областi"     
[27] "ДКСУ"                               

Банки одержувачів найрізноманітніші:

recipt_mfos <- transactions[, c("recipt_mfo_knw_id", "recipt_mfo_nm")]
levels(recipt_mfos[,2])
  [1] ""                                          
  [2] "Test Bank"                                 
  [3] "АБ \"КРЕДИТ-ДНІПРО\",Дніпропетровськ    "  
  [4] "АБ \"МЕТАЛУРГ\", М.ЗАПОРІЖЖЯ            "  
  [5] "АБ \"ПОЛТАВА-БАНК\" М.ПОЛТАВА           "  
  [6] "АКБ \"ІНДУСТРІАЛБАНК\" М.ЗАПОРІЖЖЯ      "  
  [7] "АКБ \"ІНТЕГРАЛ\", М.КИЇВ                "  
  [8] "АКБ \"МРІЯ\"                            "  
...
[207] "ХМ.ОУ ВАТ\"Д.ОЩАД.Б.У\" У М.ХМЕЛЬНИЦЬКИЙ"  
[208] "ХМ.Ф.ЗАТ КБ\"ПРИВАТБАНК\" М.ХМЕЛЬНИЦЬКИЙ"  
[209] "ХОД АППБ \"АВАЛЬ\" М.ХАРКІВ             "  
[210] "ЧЕРКАС.ОБЛ.ДИР.АППБ\"АВАЛЬ\", М.ЧЕРКАСИ "  
[211] "ЧЕРК.Ф.ГРУ ЗАТ КБ ПРИВАТБАНК М.ЧЕРКАСИ"    
[212] "ЧЕРНІВЕЦЬКА ФІЛІЯ ЗАТ КБ \"ПРИВАТБАНК\" "  
[213] "ЧЕРНІГІВ ОБЛУПР-Я ВАТ \"ДЕРЖ.ОЩАДБАHК\" "  
[214] "ЧЕРНІГІВСЬКА ОБЛАСНА ДИР. АППБ \"АВАЛЬ\"" 

Якщо прискіпливо подивитись, то можна помітити, що деякі дані не є валідними: подекуди не вказано банк чи вказано "Test Bank".

МФО 899998 та СЕА

Якщо банк платника не вказано, то усі такі платежі мають подібне призначення:

*;242;xxxx;Перераховано до бюджету коштів з рахунку в СЕА декларація з ПДВ xxxx від 17.08.xxxx;1D8B6F63FEC904D2ExxxxAxxxx

СЕА - система електронного адміністрування податку на додану вартість. Для адміністрування ПДВ в Казначействі відкривається рахунок платника ПДВ. Тому в таких випадках банком можна вважати ДКСУ. МФО, що вказується у таких випадках: 899998.

Таємний банк одержувача

Якщо не вказано банк одержувача, то можуть бути такі причини:

  • Це перерахування платника ПДВ на власний рахунок СЕА
  • Одержувачем є банк
  • Інші (поки що не відомі причини)

Тестовий ПРАВЕКС-БАНК

Також є незрозумілим значення "Test bank" у полі назви банку. Можливо, це помилка у довіднику МФО, що використовується у edata. Даному МФО відповідає ПАТКБ "ПРАВЕКС-БАНК". Можливо, даним у полі recipt_mfo_nm не варто довіряти.

> unique(transactions[transactions$recipt_mfo_nm =="Test Bank",c("recipt_mfo_nm", "recipt_mfo_knw_id")])
    recipt_mfo_nm recipt_mfo_knw_id
686     Test Bank            380838

Нормалізація

Тим не менш, експортуємо базу МФО задля нормалізації даних. Таким чином можна видалити 2 стовбці та "полегшити" файл на 20%:

Rscript extracts/scripts/extract_mfos.R
Rscript extracts/scripts/normalize.R
ls -lh transactions.csv extracts/*.csv
-rw-rw-r-- 1 john john 16K січ 10 12:28 extracts/mfos.csv
-rw-rw-r-- 1 john john 41M січ 10 12:29 extracts/transactions.csv
-rw-rw-r-- 1 john john 53M січ 10 12:17 transactions.csv

ЄДПРОУ на назви платників/одержувачів

На жаль, у полях "платник" та "одержувач" вказується не назва організації, а назва рахунку. Тому назва отримувача/платника може не співпадати з назвою у реєстрі організацій.

Нормалізація

Експортуємо базу ЄДРПОУ задля нормалізації даних. Тим ми зекономимо 15%:

Rscript extracts/scripts/extract_mfos.R
Rscript extracts/scripts/normalize.R
ls -lh transactions.csv extracts/*.csv
-rw-rw-r-- 1 john john 4,0M січ 10 22:05 extracts/edrpou.csv
-rw-rw-r-- 1 john john  16K січ 10 13:57 extracts/mfos.csv
-rw-rw-r-- 1 john john  42M січ 11 09:20 extracts/transactions.csv
-rw-rw-r-- 1 john john  53M січ 10 12:17 transactions.csv

Разом з нормалізацією МФО:

-rw-rw-r-- 1 john john  29M січ 11 09:52 extracts/transactions.csv