Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Interactive or assisted data cleansing of public budget data

by fishy (Friar)
on May 04, 2023 at 14:59 UTC ( [id://11151989]=CUFP: print w/replies, xml ) Need Help??

Problem

As they were created and maintained manually, over the years the descriptions of each code of the economic classification of expenditures and revenues were becoming polluted. For example, for one year the description for code 20 is "Automotive repairments", for other year the same code has "Auto repairs", for other year it has "Vehicle maintenance", and so on. Although most of the time the descriptions match, there are differences between years. Not just word differences, also abbreviations, accents, lower-uppercase, blanks, etc...

Unfortunately, all the values for one field (column) are composed of the concatenation of the code and the description, e.g. "20.- Vehicle maintenance". There aren't two separate fields for code and description. This way, it is hard to create pivot tables and such things by people who don't know how to program.

Task

Normalize the values (strings composed of code and description) of a specific field. Write a program showing to the user all the codes for which the associated description differ between years. Also, as a suggestion present the most recent (by year) code+description string (assuming it is the "best", more accurate, more descriptive, ...). Let the user interactively choose from all the options shown or introduce a new description.
Once finished, write out a CSV file with just one column containing the normalized values. This file can then be used to easily replace the whole column in the original input CSV file by using a spreadsheet app, like LibreOffice Calc or MS Excel.

Example session (target column 12):

$ raku clean_class.raku -t=12 PPP_INC_2014-2021_Liq_20230424.csv Read rows: 4139 WARNING: unexpected separator: 1 WARNING: empty txt: 1 Processed rows: 4139 1. Impost sobre la renda 2021 2. Sobre la renda 2014 2015 2016 2017 2018 2019 2020 [code: 10 remaining: 12] Which one (1-2)[1]: 1. Sobre transmissions patrimonials i actes jurídics documentats 2014 2015 2016 2017 2018 2019 2020 2. Transmissions patrimonials i actes jurídics documentats 2021 [code: 20 remaining: 11] Which one (1-2)[2]: 2 1. De l'Administració General de l'Estat 2020 2021 2. De l'Estat 2014 2015 2016 2017 2018 2019 [code: 40 remaining: 10] Which one (1-2)[1]: 1. D'empreses públiques i d'altres ens públics de la C. 2020 2. Del Sector Públic Instrumental i altres ens del Sector Públic de la + Comunitat 2021 3. Del sector públic instrumental i d'altres ens públics de la C. 2014 2016 2017 2018 2019 [code: 44 remaining: 9] Which one (1-3)[2]: ...

As a bonus, as user input accept also a kind of "class" specification. For example, "1,3:4;2:6". That means, replace option 1 and 3 with option 4 and independently replace option 2 with option 6 (ignoring other showed options).

Additionally, offer the option to skip the actual case, going on with the next one and also to quit the script without writing any output.

Solution
#!raku # ################################################################# # # Clean classification # # last revision: 12.05.2023 # # $ raku clean_class.raku -t=12 PPP_ING_2014-2021_Liq_20230424.csv # # ################################################################# use v6; use lib 'lib'; use Text::CSV; sub MAIN (Bool :v($verbose) = False, Int :t($which_col) = 1, Str :s($sep) = ';', Str :q($quo) = '"', *@f) { for @f -> $fn { my $csv = Text::CSV.new(:$sep, :$quo); # Read the input and collect the data for the specified field +(target column) my $fh = open $fn, :r, :!chomp; # Include year column my @target_col = $csv.getline_all($fh).map( *[0, $which_col] ) +; say "Read rows: { @target_col.elems }"; $fh.close; my %puf = (); ################################################### # +---------+ +----------+ +------+ # | $puf_id |-+->| $puf_txt |-+->| idx |--->[..] # +---------+ | +----------+ | +------+ # | | +------+ # | +->| year |--->[..] # | +------+ # | +----------+ # +->| max_year | # | +----------+ # | +----------+ # +->| sugg_txt | # +----------+ ################################################### my Int $row_count = 0; for @target_col -> $my_row { $row_count++; if ($my_row) { say "WARNING: unexpected separator: $row_count" unless $my_row[1].Str ~~ / '.- ' /; my ($puf_id, $puf_txt) = $my_row[1].Str.split(".- "); say "WARNING: empty id: $row_count" unless $puf_id; say "WARNING: empty txt: $row_count" unless $puf_txt; if ($puf_id ~~ / ^\d /) { unless $puf_id and %puf{$puf_id}:exists { %puf{$puf_id}<max_year> = 0; %puf{$puf_id}<sugg_txt> = "void"; } # Collect indices %puf{$puf_id}{$puf_txt}<idx> = [] unless ($puf_txt and %puf{$puf_id}{$puf_txt}:exist +s); %puf{$puf_id}{$puf_txt}<idx>.push: $row_count - 1; # Collect years %puf{$puf_id}{$puf_txt}<year> = [] unless ($puf_txt and %puf{$puf_id}{$puf_txt}:exist +s); %puf{$puf_id}{$puf_txt}<year>.push: $my_row[0]; # For suggestion, record most recent text (based o +n year) if ($my_row[0].Numeric > %puf{$puf_id}<max_year>) +{ %puf{$puf_id}<max_year> = $my_row[0].Numeric; %puf{$puf_id}<sugg_txt> = $puf_txt; } } } } if ($csv.eof) { say "Processed rows: $row_count"; } print "\n"; # Get rid of year column # Prepare for being sliced (see "Normalize..." below) @target_col = @target_col»[1]; # Count also 'max_year' and 'sugg_txt' my $remaining = (%puf.keys.grep: { %puf{$_}.elems > 3 }).elems +; # Process options menu # Show only values who repeat more than once and record user i +nput my regex ritchie { $<whichy>=(\d ** 1..2 \s* [ ',' \s* \d ** 1..2 ]*?) \s* ':' \s* [ $<play_this>=(\d ** 1..2) || $<play_new_descript>=(<-[ \ +d ]> .+) ] } my regex valens { ^ <ritchie> \s* [';' \s* <ritchie>]*? $ } my %replace_this_idx; my Bool $quit = False; SKIPPER: for %puf.keys.sort -> $puf_id { # Count also 'max_year' and 'sugg_txt' if (%puf{$puf_id}.elems > 3) { MENU: loop { my $i = 0; my %show = (); ######################## # +------+ +------+ # | $i |-+->| txt | # +------+ | +------+ # | +------+ # +->| year | # +------+ # +------+ # | sugg | # +------+ ######################## # Build up menu for %puf{$puf_id}.keys.sort -> $puf_txt { FIRST { %show<sugg> = 0 } next if $puf_txt eq 'sugg_txt' | 'max_year'; %show{++$i}<txt> = $puf_txt; %show<sugg> = $i if %puf{$puf_id}<sugg_txt> eq + $puf_txt; %show{$i}<year> = (%puf{$puf_id}{$puf_txt}<yea +r>.map: *=> 0).hash.keys.sort; } # Show menu for %show.keys.sort -> $j { next if $j eq 'sugg'; say "$j. %show{$j}<txt>"; print " $_" for %show{$j}<year>; print "\n"; } my $player = trim prompt "[code: $puf_id remainin +g: { $remaining }] Which one (1-{ %show.elems - 1 })[{ %show<sugg> } +]: "; if ($player eq "q") { $quit = True; last SKIPPER; } if ($player eq "n") { $remaining--; print "\n"; next SKIPPER; } # User hit return key (accepting suggestion) $player = %show<sugg> if $player eq ""; # Create text mapping from numeric menu mapping # and collect text to replace my %replace_this_txt = (); if ($player ~~ / <valens> /) { my @check_list = $<valens>.split: / <[,;:]> /; if (@check_list.elems != @check_list.unique.el +ems) { say "ERROR: invalid option { $player } (re +petitions are not allowed)"; next MENU; } else { for $<valens>.split: / ';' / -> $guy { if ($guy ~~ / <ritchie> /) { if ($<ritchie><play_this>) { if (%show{$<ritchie><play_this +>}:exists) { %replace_this_txt{%show{$< +ritchie><play_this>}<txt>} = []; for $<ritchie><whichy>.spl +it: / ',' / -> $j { if (%show{$j}:exists) +{ %replace_this_txt{ +%show{$<ritchie><play_this>}<txt>} .push: %sh +ow{$j}<txt>; } else { say "ERROR: invali +d option { $j } (specified target value doesn't exist)"; next MENU; } } } else { say "ERROR: invalid option + { $<ritchie><play_this> } (specified player value doesn't exist)"; next MENU; } } elsif ($<ritchie><play_new_descr +ipt>) { %replace_this_txt{$<ritchie><p +lay_new_descript>} = []; for $<ritchie><whichy>.split: +/ ',' / -> $j { if (%show{$j}:exists) { %replace_this_txt{$<ri +tchie><play_new_descript>} .push: %show{$ +j}<txt>; } else { say "ERROR: invalid op +tion { $j } (specified target value doesn't exist)"; next MENU; } } } else { say "ERROR: missing player val +ue: { $<ritchie> }"; next MENU; } } } } } else { if (%show{$player}:exists) { %replace_this_txt{%show{$player}<txt>} = [ +]; for %show.keys -> $j { next if $j eq 'sugg' | $player; %replace_this_txt{%show{$player}<txt>} +.push: %show{$j}<txt>; } } else { say "ERROR: invalid option { $player }"; next MENU; } } # Lookup and recover numeric indexes %replace_this_idx = (); for %replace_this_txt.keys -> $player_txt { %replace_this_idx{$player_txt} = gather { %puf{$puf_id}{$_}<idx>.deepmap: *.take for %replace_this_txt{$player_txt}.values; } } if ($verbose) { for %replace_this_idx.keys.sort -> $player_txt + { say "$player_txt --> { %replace_this_idx{$ +player_txt} }"; } } print "\n"; next unless $player eq any(1 .. %show.elems) or $p +layer ~~ / <valens> /; $remaining--; last; } # MENU # Normalize the column by replacing all the choosen va +lues # (code + description strings) for %replace_this_idx.keys -> $player_txt { @target_col[%replace_this_idx{$player_txt}.list] = + (loop { $puf_id ~ ".- " ~ $player_txt; }); } } } # SKIPPER unless $quit { my $fh_result = open "clean_class_" ~ $which_col ~ ".csv", + :w; $fh_result.print("$_\n") for @target_col; $fh_result.close; say "Written out: clean_class_" ~ $which_col ~ ".csv"; # For debug purpose if ($verbose) { print "=" x 12; print "\n"; say "({ %puf.elems })"; print "\n"; for %puf.keys.sort -> $puf_id { # count also 'max_year' and 'sugg_txt' if (%puf{$puf_id}.elems > 3) { say "c: $puf_id"; say "w: %puf{$puf_id}<sugg_txt>"; for %puf{$puf_id}.keys.sort -> $puf_txt { say "t: $puf_txt"; print "i: "; for %puf{$puf_id}{$puf_txt} -> $row { print "$row "; } print "\n"; } print "\n"; } } } } } }
Sample input data
Exercici;Sector;Tipus;Partida pressupostària;Secció;Centre gestor;Cent +re ingrés;Fons;Tipus Finançament;Tipus Operació;Consolida;Capítol;Art +icle;Concepte;Subconcepte;Previsió inicial;Crèdits extraordinaris;Sup +lements de crèdit;Ampliacions de crèdit;Generacions de crèdit;Incorpo +racions de crèdit;Rectificacions de crèdit;Total modificacions;Crèdit + definitiu;Contret íntegre;Anul·lacions de contret;Contret líquid;Rec +aptació integra;Devolucions d'ingressos;Recaptació líquida;Altres dat +es;Pendent de cobrament;Drets reconeguts nets 2014;AGBB;Ingressos;31101/10000/0000/00000;31.- Serveis comuns general +s;311.- Serveis comuns, despeses diverses;31101.- Serveis comuns, des +peses diverses;00000.- Fons no finalista/no assignat;1.- Operacions n +o financeres;A.- Operacions corrents;Sí;1.- Imposts directes;10.- Sob +re la renda;100.- Impost sobre la renda de les persones físiques;1000 +0.- Impost sobre la renda de les persones físiques, tarifa autonòmica +;751843100;;;;;;;;751843100;752458118.41;;752458118.41;752458118.41;; +752458118.41;;;752458118.41 2015;AGBB;Ingressos;31101/10000/0000/00000;31.- Serveis comuns general +s;311.- Serveis comuns, despeses diverses;31101.- Serveis comuns, des +peses diverses;00000.- Fons no finalista/no assignat;1.- Operacions n +o financeres;A.- Operacions corrents;Sí;1.- Imposts directes;10.- Sob +re la renda;100.- Impost sobre la renda de les persones físiques;1000 +0.- Impost sobre la renda de les persones físiques, tarifa autonòmica +;808214960;;;;;;;;808214960;860421193.4;;860421193.4;860421193.4;;860 +421193.4;;;860421193.4 2016;AGBB;Ingressos;12201/74300/0000/00000;12.- Innovació, Recerca i T +urisme;122.- DG Turisme;12201.- DG Turisme;00000.- Fons no finalista/ +no assignat;1.- Operacions no financeres;B.- Operacions de capital;Sí +;7.- Transferències de capital;74.- Del sector públic instrumental i +d'altres ens públics de la Comunitat;743.- De consorcis en que partic +ipa la Comunitat;74300.- De consorcis en que participa la Comunitat;; +;;;130000;;;130000;130000;130000;;130000;130000;;130000;;;130000 2016;AGBB;Ingressos;31101/10000/0000/00000;31.- Serveis comuns general +s;311.- Serveis comuns, despeses diverses;31101.- Serveis comuns, des +peses diverses;00000.- Fons no finalista/no assignat;1.- Operacions n +o financeres;A.- Operacions corrents;Sí;1.- Imposts directes;10.- Sob +re la renda;100.- Impost sobre la renda de les persones físiques;1000 +0.- Impost sobre la renda de les persones físiques, tarifa autonòmica +;820722560;;;;;;;;820722560;946438458.76;0.11;946438458.65;946438458. +76;0.11;946438458.65;;;946438458.65 2017;AGBB;Ingressos;12201/74300/0000/00000;12.- Innovació, Recerca i T +urisme;122.- DG Turisme;12201.- DG Turisme;00000.- Fons no finalista/ +no assignat;1.- Operacions no financeres;B.- Operacions de capital;Sí +;7.- Transferències de capital;74.- Del sector públic instrumental i +d'altres ens públics de la Comunitat;743.- De consorcis en que partic +ipa la Comunitat;74300.- De consorcis en que participa la Comunitat;1 +75000;;;;;;;;175000;175000;;175000;175000;;175000;;;175000 2017;AGBB;Ingressos;31101/10000/0000/00000;31.- Serveis comuns general +s;311.- Serveis comuns, despeses diverses;31101.- Serveis comuns, des +peses diverses;00000.- Fons no finalista/no assignat;1.- Operacions n +o financeres;A.- Operacions corrents;Sí;1.- Imposts directes;10.- Sob +re la renda;100.- Impost sobre la renda de les persones físiques;1000 +0.- Impost sobre la renda de les persones físiques, tarifa autonòmica +;928441980;;;;;;;;928441980;1101522683.49;;1101522683.49;1101522683.4 +9;;1101522683.49;;;1101522683.49 2018;AGBB;Ingressos;12201/74300/0000/00000;12.- Innovació, Recerca i T +urisme;122.- DG Turisme;12201.- DG Turisme;00000.- Fons no finalista/ +no assignat;1.- Operacions no financeres;B.- Operacions de capital;Sí +;7.- Transferències de capital;74.- Del sector públic instrumental i +d'altres ens públics de la Comunitat;743.- De consorcis en que partic +ipa la Comunitat;74300.- De consorcis en que participa la Comunitat;; +;;;97623.42;;;97623.42;97623.42;97623.42;;97623.42;97623.42;;97623.42 +;;;97623.42 2018;AGBB;Ingressos;15301/74101/0000/17064;15.- Medi Ambient, Agricult +ura i Pesca;153.- DG Espais Naturals i Biodiversitat;15301.- DG Espai +s Naturals i Biodiversitat;17064.- Projectes associats a l'impost sob +re estades turístiques y turisme sostenible;1.- Operacions no finance +res;B.- Operacions de capital;Sí;7.- Transferències de capital;74.- D +el sector públic instrumental i d'altres ens públics de la Comunitat; +741.- D'empreses públiques no societàries i d'altres ens públics de l +a Comunitat;74101.- De l'Agència de Turisme de les Illes;;;;;1136378. +64;;;1136378.64;1136378.64;1136378.64;;1136378.64;;;;;1136378.64;1136 +378.64 2018;AGBB;Ingressos;15601/74101/0000/17064;15.- Medi Ambient, Agricult +ura i Pesca;156.- DG Educació Ambiental, Qualitat Ambiental i Residus +;15601.- DG Educació Ambiental, Qualitat Ambiental i Residus;17064.- +Projectes associats a l'impost sobre estades turístiques y turisme so +stenible;1.- Operacions no financeres;B.- Operacions de capital;Sí;7. +- Transferències de capital;74.- Del sector públic instrumental i d'a +ltres ens públics de la Comunitat;741.- D'empreses públiques no socie +tàries i d'altres ens públics de la Comunitat;74101.- De l'Agència de + Turisme de les Illes;;;;;305500;;;305500;305500;305500;;305500;;;;;3 +05500;305500 2018;AGBB;Ingressos;15901/74101/0000/17064;15.- Medi Ambient, Agricult +ura i Pesca;159.- DG Pesca i Medi Marí;15901.- DG Pesca i Medi Marí;1 +7064.- Projectes associats a l'impost sobre estades turístiques y tur +isme sostenible;1.- Operacions no financeres;B.- Operacions de capita +l;Sí;7.- Transferències de capital;74.- Del sector públic instrumenta +l i d'altres ens públics de la Comunitat;741.- D'empreses públiques n +o societàries i d'altres ens públics de la Comunitat;74101.- De l'Agè +ncia de Turisme de les Illes;;;;;250000;;;250000;250000;250000;;25000 +0;;;;;250000;250000 2018;AGBB;Ingressos;19201/74101/0000/16064;19.- Treball, Comerç i Indú +stria;192.- DG Ocupació i Economia;19201.- DG Ocupació i Economia;160 +64.- Projectes associats a l'impost sobre estades turístiques y turis +me sostenible;1.- Operacions no financeres;B.- Operacions de capital; +Sí;7.- Transferències de capital;74.- Del sector públic instrumental +i d'altres ens públics de la Comunitat;741.- D'empreses públiques no +societàries i d'altres ens públics de la Comunitat;74101.- De l'Agènc +ia de Turisme de les Illes;;;;;1468460;;;1468460;1468460;;;;;;;;; 2018;AGBB;Ingressos;19201/74101/0000/17064;19.- Treball, Comerç i Indú +stria;192.- DG Ocupació i Economia;19201.- DG Ocupació i Economia;170 +64.- Projectes associats a l'impost sobre estades turístiques y turis +me sostenible;1.- Operacions no financeres;B.- Operacions de capital; +Sí;7.- Transferències de capital;74.- Del sector públic instrumental +i d'altres ens públics de la Comunitat;741.- D'empreses públiques no +societàries i d'altres ens públics de la Comunitat;74101.- De l'Agènc +ia de Turisme de les Illes;;;;;2500000;;;2500000;2500000;3968460;;396 +8460;;;;;3968460;3968460 2018;AGBB;Ingressos;19401/74101/0000/17064;19.- Treball, Comerç i Indú +stria;194.- DG Política Industrial;19401.- DG Política Industrial;170 +64.- Projectes associats a l'impost sobre estades turístiques y turis +me sostenible;1.- Operacions no financeres;B.- Operacions de capital; +Sí;7.- Transferències de capital;74.- Del sector públic instrumental +i d'altres ens públics de la Comunitat;741.- D'empreses públiques no +societàries i d'altres ens públics de la Comunitat;74101.- De l'Agènc +ia de Turisme de les Illes;;;;;182139.74;;;182139.74;182139.74;182139 +.74;;182139.74;;;;;182139.74;182139.74 2018;AGBB;Ingressos;25101/74101/0000/17064;25.- Territori, Energia i M +obilitat;251.- Secretaria General;25101.- Secretaria General;17064.- +Projectes associats a l'impost sobre estades turístiques y turisme so +stenible;1.- Operacions no financeres;B.- Operacions de capital;Sí;7. +- Transferències de capital;74.- Del sector públic instrumental i d'a +ltres ens públics de la Comunitat;741.- D'empreses públiques no socie +tàries i d'altres ens públics de la Comunitat;74101.- De l'Agència de + Turisme de les Illes;;;;;4598000;;;4598000;4598000;4598000;;4598000; +;;;;4598000;4598000 2018;AGBB;Ingressos;31101/10000/0000/00000;31.- Serveis comuns general +s;311.- Serveis comuns, despeses diverses;31101.- Serveis comuns, des +peses diverses;00000.- Fons no finalista/no assignat;1.- Operacions n +o financeres;A.- Operacions corrents;Sí;1.- Imposts directes;10.- Sob +re la renda;100.- Impost sobre la renda de les persones físiques;1000 +0.- Impost sobre la renda de les persones físiques, tarifa autonòmica +;1002325440;;;;16267701.21;;;16267701.21;1018593141.21;1238078652.76; +;1238078652.76;1238078652.76;;1238078652.76;;;1238078652.76 2018;AGBB;Ingressos;31101/74101/0000/17064;31.- Serveis comuns general +s;311.- Serveis comuns, despeses diverses;31101.- Serveis comuns, des +peses diverses;17064.- Projectes associats a l'impost sobre estades t +urístiques y turisme sostenible;1.- Operacions no financeres;B.- Oper +acions de capital;Sí;7.- Transferències de capital;74.- Del sector pú +blic instrumental i d'altres ens públics de la Comunitat;741.- D'empr +eses públiques no societàries i d'altres ens públics de la Comunitat; +74101.- De l'Agència de Turisme de les Illes;;;;;6770000;;;6770000;67 +70000;6770000;;6770000;;;;;6770000;6770000 2019;AGBB;Ingressos;12201/74300/0000/00000;12.- Innovació, Recerca i T +urisme;122.- DG Turisme;12201.- DG Turisme;00000.- Fons no finalista/ +no assignat;1.- Operacions no financeres;B.- Operacions de capital;Sí +;7.- Transferències de capital;74.- Del sector públic instrumental i +d'altres ens públics de la Comunitat;743.- De consorcis en que partic +ipa la Comunitat;74300.- De consorcis en que participa la Comunitat;6 +1790;;;;;;;;61790;61789.79;;61789.79;61789.79;;61789.79;;;61789.79 2019;AGBB;Ingressos;12501/74101/0000/17064;12.- Innovació, Recerca i T +urisme;125.- DG Innovació i Recerca;12501.- DG Innovació i Recerca;17 +064.- Projectes associats a l'impost sobre estades turístiques y turi +sme sostenible;1.- Operacions no financeres;B.- Operacions de capital +;Sí;7.- Transferències de capital;74.- Del sector públic instrumental + i d'altres ens públics de la Comunitat;741.- D'empreses públiques no + societàries i d'altres ens públics de la Comunitat;74101.- De l'Agèn +cia de Turisme de les Illes;;;;;;;;;;380700;;380700;;;;;380700;380700 2019;AGBB;Ingressos;15201/74101/0000/18064;15.- Medi Ambient, Agricult +ura i Pesca;152.- DG Recursos Hídrics;15201.- DG Recursos Hídrics;180 +64.- Projectes associats a l'impost sobre estades turístiques y turis +me sostenible;1.- Operacions no financeres;B.- Operacions de capital; +Sí;7.- Transferències de capital;74.- Del sector públic instrumental +i d'altres ens públics de la Comunitat;741.- D'empreses públiques no +societàries i d'altres ens públics de la Comunitat;74101.- De l'Agènc +ia de Turisme de les Illes;;;;;1497284.25;;;1497284.25;1497284.25;149 +7284.25;;1497284.25;;;;;1497284.25;1497284.25 2019;AGBB;Ingressos;15301/74100/0000/19094;15.- Medi Ambient, Agricult +ura i Pesca;153.- DG Espais Naturals i Biodiversitat;15301.- DG Espai +s Naturals i Biodiversitat;19094.- Fons programa Posidònia;1.- Operac +ions no financeres;B.- Operacions de capital;Sí;7.- Transferències de + capital;74.- Del sector públic instrumental i d'altres ens públics d +e la Comunitat;741.- D'empreses públiques no societàries i d'altres e +ns públics de la Comunitat;74100.- D'empreses públiques no societàrie +s i d'altres ens públics de la Comunitat;;;;;199016;;;199016;199016;1 +99016;;199016;199016;;199016;;;199016 2019;AGBB;Ingressos;15301/74101/0000/18064;15.- Medi Ambient, Agricult +ura i Pesca;153.- DG Espais Naturals i Biodiversitat;15301.- DG Espai +s Naturals i Biodiversitat;18064.- Projectes associats a l'impost sob +re estades turístiques y turisme sostenible;1.- Operacions no finance +res;B.- Operacions de capital;Sí;7.- Transferències de capital;74.- D +el sector públic instrumental i d'altres ens públics de la Comunitat; +741.- D'empreses públiques no societàries i d'altres ens públics de l +a Comunitat;74101.- De l'Agència de Turisme de les Illes;;;;;6053002. +92;;;6053002.92;6053002.92;6053002.92;;6053002.92;;;;;6053002.92;6053 +002.92 2019;AGBB;Ingressos;15501/74101/0000/18064;15.- Medi Ambient, Agricult +ura i Pesca;155.- DG Agricultura i Ramaderia;15501.- DG Agricultura i + Ramaderia;18064.- Projectes associats a l'impost sobre estades turís +tiques y turisme sostenible;1.- Operacions no financeres;B.- Operacio +ns de capital;Sí;7.- Transferències de capital;74.- Del sector públic + instrumental i d'altres ens públics de la Comunitat;741.- D'empreses + públiques no societàries i d'altres ens públics de la Comunitat;7410 +1.- De l'Agència de Turisme de les Illes;;;;;2625347.49;;;2625347.49; +2625347.49;2625347.49;;2625347.49;;;;;2625347.49;2625347.49 2019;AGBB;Ingressos;19201/74101/0000/18064;19.- Treball, Comerç i Indú +stria;192.- DG Ocupació i Economia;19201.- DG Ocupació i Economia;180 +64.- Projectes associats a l'impost sobre estades turístiques y turis +me sostenible;1.- Operacions no financeres;B.- Operacions de capital; +Sí;7.- Transferències de capital;74.- Del sector públic instrumental +i d'altres ens públics de la Comunitat;741.- D'empreses públiques no +societàries i d'altres ens públics de la Comunitat;74101.- De l'Agènc +ia de Turisme de les Illes;;;;;4453000;;;4453000;4453000;4453000;;445 +3000;;;;;4453000;4453000 2019;AGBB;Ingressos;19401/74101/0000/18064;19.- Treball, Comerç i Indú +stria;194.- DG Política Industrial;19401.- DG Política Industrial;180 +64.- Projectes associats a l'impost sobre estades turístiques y turis +me sostenible;1.- Operacions no financeres;B.- Operacions de capital; +Sí;7.- Transferències de capital;74.- Del sector públic instrumental +i d'altres ens públics de la Comunitat;741.- D'empreses públiques no +societàries i d'altres ens públics de la Comunitat;74101.- De l'Agènc +ia de Turisme de les Illes;;;;;910698.92;;;910698.92;910698.92;910698 +.92;;910698.92;;;;;910698.92;910698.92 2019;AGBB;Ingressos;25101/74101/0000/17064;25.- Territori, Energia i M +obilitat;251.- Secretaria General;25101.- Secretaria General;17064.- +Projectes associats a l'impost sobre estades turístiques y turisme so +stenible;1.- Operacions no financeres;B.- Operacions de capital;Sí;7. +- Transferències de capital;74.- Del sector públic instrumental i d'a +ltres ens públics de la Comunitat;741.- D'empreses públiques no socie +tàries i d'altres ens públics de la Comunitat;74101.- De l'Agència de + Turisme de les Illes;;;;;3146000;;;3146000;3146000;3146000;;3146000; +;;;;3146000;3146000 2019;AGBB;Ingressos;25101/74101/0000/18064;25.- Territori, Energia i M +obilitat;251.- Secretaria General;25101.- Secretaria General;18064.- +Projectes associats a l'impost sobre estades turístiques y turisme so +stenible;1.- Operacions no financeres;B.- Operacions de capital;Sí;7. +- Transferències de capital;74.- Del sector públic instrumental i d'a +ltres ens públics de la Comunitat;741.- D'empreses públiques no socie +tàries i d'altres ens públics de la Comunitat;74101.- De l'Agència de + Turisme de les Illes;;;;;1928330.58;;;1928330.58;1928330.58;1928330. +58;;1928330.58;;;;;1928330.58;1928330.58 2019;AGBB;Ingressos;31101/10000/0000/00000;31.- Serveis comuns general +s;311.- Serveis comuns, despeses diverses;31101.- Serveis comuns, des +peses diverses;00000.- Fons no finalista/no assignat;1.- Operacions n +o financeres;A.- Operacions corrents;Sí;1.- Imposts directes;10.- Sob +re la renda;100.- Impost sobre la renda de les persones físiques;1000 +0.- Impost sobre la renda de les persones físiques, tarifa autonòmica +;1371466540;;;;;;;;1371466540;1372130296.52;;1372130296.52;1372130296 +.52;;1372130296.52;;;1372130296.52 2020;AGBB;Ingressos;11901/74101/0000/17064;11.- Presidència, Cultura i + Igualtat;119.- Delegació de la Presidència per a la Cultura;11901.- +Delegació de la Presidència per a la Cultura;17064.- Projectes associ +ats a l'impost sobre estades turístiques y turisme sostenible;1.- Ope +racions no financeres;B.- Operacions de capital;Sí;7.- Transferències + de capital;74.- Del sector públic instrumental i altres ens;741.- D' +entitats públiques empresarials i altres ens públics;74101.- De l'Agè +ncia d'Estratègia Turística Illes;;;;;250000;;;250000;250000;250000;; +250000;;;;;250000;250000 2020;AGBB;Ingressos;11901/74101/0000/18064;11.- Presidència, Cultura i + Igualtat;119.- Delegació de la Presidència per a la Cultura;11901.- +Delegació de la Presidència per a la Cultura;18064.- Projectes associ +ats a l'impost sobre estades turístiques y turisme sostenible;1.- Ope +racions no financeres;B.- Operacions de capital;Sí;7.- Transferències + de capital;74.- Del sector públic instrumental i altres ens;741.- D' +entitats públiques empresarials i altres ens públics;74101.- De l'Agè +ncia d'Estratègia Turística Illes;;;;;250000;;;250000;250000;250000;; +250000;;;;;250000;250000 2020;AGBB;Ingressos;12301/74101/0000/19064;12.- Model Econòmic, Turism +e i Treball;123.- DG Model Econòmic i Ocupació;12301.- DG Model Econò +mic i Ocupació;19064.- Impuls Turisme Sostenible;1.- Operacions no fi +nanceres;B.- Operacions de capital;Sí;7.- Transferències de capital;7 +4.- Del sector públic instrumental i altres ens;741.- D'entitats públ +iques empresarials i altres ens públics;74101.- De l'Agència d'Estrat +ègia Turística Illes;;;;;3784759.72;;;3784759.72;3784759.72;3784759.7 +2;;3784759.72;;;;;3784759.72;3784759.72 2020;AGBB;Ingressos;13801/74101/0000/19064;13.- Educació, Universitat +i Recerca;138.- DG Política Universitària i Recerca;13801.- DG Políti +ca Universitària i Recerca;19064.- Impuls Turisme Sostenible;1.- Oper +acions no financeres;B.- Operacions de capital;Sí;7.- Transferències +de capital;74.- Del sector públic instrumental i altres ens;741.- D'e +ntitats públiques empresarials i altres ens públics;74101.- De l'Agèn +cia d'Estratègia Turística Illes;;;;;850000;;;850000;850000;850000;;8 +50000;;;;;850000;850000 2020;AGBB;Ingressos;15201/74101/0000/19064;15.- Medi Ambient i Territo +ri;152.- DG Recursos Hídrics;15201.- DG Recursos Hídrics;19064.- Impu +ls Turisme Sostenible;1.- Operacions no financeres;B.- Operacions de +capital;Sí;7.- Transferències de capital;74.- Del sector públic instr +umental i altres ens;741.- D'entitats públiques empresarials i altres + ens públics;74101.- De l'Agència d'Estratègia Turística Illes;;;;;21 +78500;;;2178500;2178500;2178500;;2178500;;;;;2178500;2178500 2020;AGBB;Ingressos;15301/74101/0000/17064;15.- Medi Ambient i Territo +ri;153.- DG Espais Naturals i Biodiversitat;15301.- DG Espais Natural +s i Biodiversitat;17064.- Projectes associats a l'impost sobre estade +s turístiques y turisme sostenible;1.- Operacions no financeres;B.- O +peracions de capital;Sí;7.- Transferències de capital;74.- Del sector + públic instrumental i altres ens;741.- D'entitats públiques empresar +ials i altres ens públics;74101.- De l'Agència d'Estratègia Turística + Illes;;;;;;;;;;37000;;37000;;;;;37000;37000 2020;AGBB;Ingressos;15301/74101/0000/19064;15.- Medi Ambient i Territo +ri;153.- DG Espais Naturals i Biodiversitat;15301.- DG Espais Natural +s i Biodiversitat;19064.- Impuls Turisme Sostenible;1.- Operacions no + financeres;B.- Operacions de capital;Sí;7.- Transferències de capita +l;74.- Del sector públic instrumental i altres ens;741.- D'entitats p +úbliques empresarials i altres ens públics;74101.- De l'Agència d'Est +ratègia Turística Illes;;;;;2878406.45;;;2878406.45;2878406.45;287840 +6.45;;2878406.45;;;;;2878406.45;2878406.45 2020;AGBB;Ingressos;15601/74101/0000/19064;15.- Medi Ambient i Territo +ri;156.- DG de Residus i Educació Ambiental;15601.- DG Residus i Educ +ació Ambiental;19064.- Impuls Turisme Sostenible;1.- Operacions no fi +nanceres;B.- Operacions de capital;Sí;7.- Transferències de capital;7 +4.- Del sector públic instrumental i altres ens;741.- D'entitats públ +iques empresarials i altres ens públics;74101.- De l'Agència d'Estrat +ègia Turística Illes;;;;;500000;;;500000;500000;500000;;500000;;;;;50 +0000;500000 2020;AGBB;Ingressos;19501/74101/0000/19064;19.- Transició Energètica i + Sectors Productius;195.- DG Innovació;19501.- DG Innovació;19064.- I +mpuls Turisme Sostenible;1.- Operacions no financeres;B.- Operacions +de capital;Sí;7.- Transferències de capital;74.- Del sector públic in +strumental i altres ens;741.- D'entitats públiques empresarials i alt +res ens públics;74101.- De l'Agència d'Estratègia Turística Illes;;;; +;40000;;;40000;40000;40000;;40000;;;;;40000;40000 2020;AGBB;Ingressos;19701/74101/0000/17064;19.- Transició Energètica i + Sectors Productius;197.- DG Energia i Canvi Climàtic;19701.- DG Ener +gia i Canvi Climàtic;17064.- Projectes associats a l'impost sobre est +ades turístiques y turisme sostenible;1.- Operacions no financeres;B. +- Operacions de capital;Sí;7.- Transferències de capital;74.- Del sec +tor públic instrumental i altres ens;741.- D'entitats públiques empre +sarials i altres ens públics;74101.- De l'Agència d'Estratègia Turíst +ica Illes;;;;;7260000;;;7260000;7260000;7260000;;7260000;;;;;7260000; +7260000 2020;AGBB;Ingressos;20201/74100/0000/00000;20.- Agricultura, Pesca i A +limentació;202.- DG Agricultura, Ramaderia i Desenvolupament Rural;20 +201.- DG Agricultura, Ramaderia i Desenvolupament Rural;00000.- Fons +no finalista/no assignat;1.- Operacions no financeres;B.- Operacions +de capital;Sí;7.- Transferències de capital;74.- Del sector públic in +strumental i altres ens;741.- D'entitats públiques empresarials i alt +res ens públics;74100.- D'empreses públiques no societàries i altres +ens de la Comunitat Autònoma;;;;;;;;;;3886.21;;3886.21;3886.21;;3886. +21;;;3886.21 2020;AGBB;Ingressos;20401/74101/0000/19064;20.- Agricultura, Pesca i A +limentació;204.- DG Polítiques per a la Soberania Alimentària;20401.- + DG Polítiques per a la Soberania Alimentària;19064.- Impuls Turisme +Sostenible;1.- Operacions no financeres;B.- Operacions de capital;Sí; +7.- Transferències de capital;74.- Del sector públic instrumental i a +ltres ens;741.- D'entitats públiques empresarials i altres ens públic +s;74101.- De l'Agència d'Estratègia Turística Illes;;;;;250000;;;2500 +00;250000;250000;;250000;;;;;250000;250000 2020;AGBB;Ingressos;31101/10000/0000/00000;31.- Serveis comuns general +s;311.- Serveis comuns, despeses diverses;31101.- Serveis comuns, des +peses diverses;00000.- Fons no finalista/no assignat;1.- Operacions n +o financeres;A.- Operacions corrents;Sí;1.- Imposts directes;10.- Sob +re la renda;100.- Impost sobre la renda de les persones físiques;1000 +0.- Impost sobre la renda de les persones físiques, tarifa autonòmica +;1483802050;;;;68439250;;-8985662.44;59453587.56;1543255637.56;159668 +0708.59;0.4;1596680708.19;1596680708.59;0.4;1596680708.19;;;159668070 +8.19 2021;AGBB;Ingressos;13801/74101/0000/17064;13.- Conselleria d'Educació +, Universitat i Recerca;138.- Direcció General de Política Università +ria i Recerca;13801.- Direcció General de Política Universitària i Re +cerca;17064.- Impuls Turisme Sostenible (ITS);1.- Operacions no finan +ceres;B.- Operacions de capital;Sí;7.- Transferències de capital;74.- + Del Sector Públic Instrumental i altres ens del sector públic;741.- +D'entitats públiques empresarials i altres ens públics;74101.- De l'A +gència d'Estratègia Turística de les Illes;;;;;240000;;;240000;240000 +;240000;;240000;;;;;240000;240000 2021;AGBB;Ingressos;25101/74101/0000/17064;25.- Conselleria de Mobilit +at i Habitatge;251.- Secretaria General de la Conselleria de Mobilita +t i Habitatge;25101.- Secretaria General de la Conselleria de Mobilit +at i Habitatge;17064.- Impuls Turisme Sostenible (ITS);1.- Operacions + no financeres;B.- Operacions de capital;Sí;7.- Transferències de cap +ital;74.- Del Sector Públic Instrumental i altres ens del sector públ +ic;741.- D'entitats públiques empresarials i altres ens públics;74101 +.- De l'Agència d'Estratègia Turística de les Illes;6;;;;;;;;6;;;;;;; +;; 2021;AGBB;Ingressos;25101/74101/0000/18064;25.- Conselleria de Mobilit +at i Habitatge;251.- Secretaria General de la Conselleria de Mobilita +t i Habitatge;25101.- Secretaria General de la Conselleria de Mobilit +at i Habitatge;18064.- Impuls Turisme Sostenible (ITS);1.- Operacions + no financeres;B.- Operacions de capital;Sí;7.- Transferències de cap +ital;74.- Del Sector Públic Instrumental i altres ens del sector públ +ic;741.- D'entitats públiques empresarials i altres ens públics;74101 +.- De l'Agència d'Estratègia Turística de les Illes;6;;;;;;;;6;;;;;;; +;; 2021;AGBB;Ingressos;31101/10000/0000/00000;31.- Serveis comuns;311.- S +erveis comuns;31101.- Serveis comuns;00000.- Fons no finalista/no ass +ignat;1.- Operacions no financeres;A.- Operacions corrents;Sí;1.- Imp +osts directes;10.- Impost sobre la renda;100.- Impost sobre la renda +de les persones físiques;10000.- Impost sobre la renda de les persone +s físiques;1519055000;;;;;;;;1519055000;1517457824.43;;1517457824.43; +1517457824.43;;1517457824.43;;;1517457824.43

Replies are listed 'Best First'.
Re: Interactive or assisted data cleansing of public budget data
by Anonymous Monk on May 11, 2023 at 18:22 UTC
    ~ % raku clean_class_code_only.p6 PPP_INC_2014-2021_Liq_20230424.csv Error while reading from file: Malformed UTF-8 near bytes 70 ed 74

      Save script as utf-8 file.

      It's because of accented i at lines 22 and 27: "Capítol".

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: CUFP [id://11151989]
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (2)
As of 2024-04-24 17:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found