ondata / guida-api-istat

Guida all'uso delle API REST di ISTAT
https://ondata.github.io/guida-api-istat
Creative Commons Attribution Share Alike 4.0 International
28 stars 4 forks source link

coerenza codici ISTAT e NUTS del campo "ITTER107" #23

Closed priolap closed 8 months ago

priolap commented 8 months ago

ciao ragazzi,

leggendo la vostra guida il campo ITTER107 rappresenta il codice ISTAT del comune, scaricabile da qui: https://www.istat.it/it/archivio/6789

tuttavia facendo un controllo incrociato ho trovato come valori da diverse tabelle i codici NUTS https://it.wikipedia.org/wiki/Nomenclatura_delle_unit%C3%A0_territoriali_per_le_statistiche_dell%27Italia

faccio un esempio: vi è come valore IT108, corrispondente a Monza per il codice ISTAT, ma anche ITC1, corrispondente al NUTS code 2. Non riesco quindi a fare il corretto mapping, vorrei estrarre Regione dove è regionale, Comune dove è comune.

Potete aiutarmi? Grazie Paola

priolap commented 8 months ago

aggiungo anche che non utilizzo ITTER107_DESC perché in alcuni casi c'è una incongruenza. Ad esempio:

urn:sdmx:org.sdmx.infomodel.datastructure.Dataflow=IT1:82_87(1.1)

qui abbiamo che nel campo è segnalato il numero di abitanti, oppure non è valorizzato, nonostante il campo ITTER107 invece lo sia

inoltre ITD ([Northeast Italy] è ora ITH, fonte : https://en.wikipedia.org/wiki/Northeast_Italy)

aborruso commented 8 months ago

Ciao @priolap mi aiuti a capire con un esempio?

Mi indichi un codice di un dataflow che hai scaricato, che ti ha dato incongruenze?

Il tuo obiettivo principale è la mappa Comuni codici NUTS?

priolap commented 8 months ago

{ "id": "82_87", "urn": "urn:sdmx:org.sdmx.infomodel.datastructure.Dataflow=IT1:82_87(1.1)", "version": 1.1, "agencyID": "IT1", "name": "Aspetti della vita quotidiana - Famiglie" } questo è un esempio dove: 1) ci sono nel campo ITTER107 sia codici nuts che codici istat

se vuoi posso reperire esempi dove: 1) il codice per bolzano/treno è obsoleto (dovrebbe essere ITH) 2) il campo ITTER107_DESC è valorizzato in maniera errata

il mio obiettivo è ricavare la descrizione corretta, sia regione sia comune o zona

aborruso commented 8 months ago

Ciao @priolap , ho scaricato il dataflow 82_87 a cui fai riferimento, che più o meno appare come sotto. In ITTER107 vedo la lista dei codici prevista dallo schema.

Rifaccio i passi della guida:

Ma temo di non esserti stato d'aiuto :(

image

priolap commented 8 months ago

sono io forse a essermi spiegata male, o forse non siete voi il target di questa domanda. Mi spiego meglio.. nel campo ITTER107, c'è una mescolanza di codici comunali ISTAT (dal tuo screenshot, ad esempio è il 2) e di codici nuts dell'UE (se scorri la tabella, appare ITD1); a ciò si aggiunge che i codici nuts non sono neppure aggiornati, dove quindi il nord-est è etichettato ancora come ITD, dovrebbe essere ITH.

Volendo ignorare i codici, nel campo ITTER107_DESC, che dovrebbe essere la corrispondenza regione/comune come appare in altre tabelle, si trovano invece descrizioni come "più di 2 mln di abitanti ecc"

sono mismatch del DB ISTAT?

aborruso commented 8 months ago

Ciao @priolap, sono io probabilmente che non capisco, ma troveremo la quadra.

Quel campo per 82_87 contiene i valori distinti di sotto. Io estraggo i loro valori dalla codelist correlata: http://sdmx.istat.it/SDMXWS/rest/codelist/IT1/CL_ITTER107

E in questa ad esempio 2 è "centro area metropolitana"-

        <structure:Code id="2" urn="urn:sdmx:org.sdmx.infomodel.codelist.Code=IT1:CL_ITTER107(5.6).2">
          <common:Name xml:lang="it">centro area metropolitana</common:Name>
          <common:Name xml:lang="en">metropolitan area - centre</common:Name>
          <structure:Parent>
            <Ref id="IT" />
          </structure:Parent>
        </structure:Code>

È un tipo di campo con livelli gerarchici differenti. Non contiene soltanto i Comuni. Il dettaglio gerarchico dipende dal dataflow.

Quando ad esempio ci sono i Comuni, e voglio estrarre soltanto i Comuni, io filtro tramite espressione regolare. Ogni livello gerarchico ha una sua struttura mappabile.

Dove trovi il field ITTER107_DESC? Nei vari URI che ti ho indicato, non ne trovo traccia.

Sull'aggiornamento dati e disallineamenti, non devi chiedere a noi. Noi abbiamo scritto la guida.

image

priolap commented 8 months ago

grazie @aborruso,

mi è più chiaro il discorso. Allora io devo mappare con delle logiche i codici ISTAT e NUTS in autonomia (è un problema a monte), mentre mi chiedevo appunto cosa fossero i codici prettamente numerici (il numero 2 ad esempio).

come posso filtrare i dati, quando li scarico, in maniera tale da avere una granularità al massimo comunale? Io lavoro su python, però se mi mostri i comandi in altro linguaggio poi li riadatto

aborruso commented 8 months ago

come posso filtrare i dati, quando li scarico, in maniera tale da avere una granularità al massimo comunale? Io lavoro su python, però se mi mostri i comandi in altro linguaggio poi li riadatto

Come accennavo sopra, uno dei modi è usare le regex: tutti i record che nel campo ITTER107 contengono soltanto 6 numeri, ovvero ^[0-9]{6}$, saranno i Comuni.

E in Python (e in qualsiasi linguaggio) trovi come usare le regex.

Una volta che hai i Comuni, qui trovi una mappatura con i NUTS https://www.istat.it/storage/codici-unita-amministrative/Elenco-comuni-italiani.xlsx

priolap commented 8 months ago

allora penso che sia di lunghezza tre, perché da query io vedo il progressivo del comune (es. 108)

di fatto a me servono dati su granularità regionale, vi è modo per evitare di fare il giro dal comune? Intanto grazie mille

aborruso commented 8 months ago

@priolap la granularità è fissata a monte. Via SDMX scarichi il dato grezzo e lo elabori.

Se vuoi cose "precotte", magari trovi già quello che ti serve in https://esploradati.istat.it/databrowser/

priolap commented 8 months ago

grazie per i chiarimenti, devo passare per API. Buon tutto e grazie ancora :-)

aborruso commented 8 months ago

Se non ne riesci a uscire, per favore indicami i dettagli ("scarico questo xml con questo URL, da qui voglio estrarre ..., e vorrei poi aggregare, ..."). Se non mi dai qualcosa di riproducibile, ti annoierò ancora con esempi della guida :)

JikuRoby commented 8 months ago

@priolap ho avuto il tuo stesso problema, allora ho creato un mega json con tutti i nuts e tutti gli istat codes per comuni con coordinate ecc ecc. Quelle che hanno le stesse coordinate le ho lasciate così perchè sono o dismesse o cose tipo distretto ecc.

Immagino ti sarà utile, anzi qualora notassi qualcosa da migliorare senza cambiare la struttura json, te ne sarei grato.

Json:

locations.json

priolap commented 8 months ago

ciao @JikuRoby,

grazie per il JSON, ne ho costruito uno anche io meno granulare (a me non servono LAT/LONG ecc) ma è sempre molto utile averne uno più approfondito, grazie mille.

@aborruso ho trovato il modo di armonizzare, grazie!

aborruso commented 8 months ago

Ciao @priolap ero sicuro che ci saresti riuscita.

Se il tuo lavoro produce qualche esito pubblico, mi piacerebbe essere informato.

Questa guida è stata creata per dare la possibilità di produrre "qualcosa" e quindi è un piacere poterne osservare qualche evidenza.

Un saluto a entrambi

priolap commented 8 months ago

@aborruso grazie,

questo lavoro è dentro il mio progetto dottorale quindi spero proprio di pubblicarlo :-)

ti terrò informato! Paola