Vai al contenuto

Strutture dati verticale vs orizontale

Quando si progettano strutture di dati tabulari è consigliabile evitare la crescita orizzontale dei valori.
Quando è possibile, è preferibile mettere le variabili o gli attributi dei dati nelle colonne di una tabella e aggiungere i valori corrispondenti alle osservazioni dei dati nelle righe.
La crescita orizzontale di una struttura di dati tabulari può rendere difficile la manutenzione e la creazione di visualizzazioni.
In generale, è più facile identificare le relazioni tra le variabili nelle colonne che tra le righe, ed è più facile fare confronti tra gruppi di osservazioni nelle righe che tra gruppi di colonne. 1 (Continua a leggere...)

Trasformiamo la nostra tabella

Il passo successivo è modificare la struttura orizzontale in verticale, con VisiData si fa in un attimo 🙂
Tecnicamente dobbiamo fare una Unpivot della nostra tabelle di base.

Apriamo il nostro file e navighiamo sino alla colonna Sezione di censimento, con Shift + 1 ovvero ! la rendiamo chiave, in questo modo non verrà ruotata/trasposta in righe. Si possono rendere chiave più colonne conteporaneamente.

La tabella di base è composta da 2700 righe e 133 colonne.

Quando rendiamo "chiave" una colonna il colore della stessa cambia.

Con Shift + m si genera un foglio melted, che trasforma le colonne non chiave in coppie chiave/valore

In pochi secondi siamo passati dalla struttura orizzontale (2700 righe e 133 colonne), alla strutturaura verticale (356.400 righe e 3 colonne) 🙂 adesso basta salvare la nuova tabella usando i tasti CTRL + s

Struttura verticale

Prodotto il nuovo dataset a struttura verticale, possiamo unirlo (join) con il dataset dell'ISTAT "Elenco codici e denominazioni delle unità territoriali estere" e trasferire facilmente le informazioni che maggiormante ci interessano, come il Continente e Area geopolitica.

Nuovo dataset a struttura verticale | res_italiani_stranieri_iso3166.csv

Entrambi di dataset hanno una colonna in comune, anche se nominate in modo diverso, sono utili per fare le join

Elenco codici e denominazioni delle unità territoriali estere | Elenco_denominazioni_Istat_full.csv

La join si può fare in tanti modi e con tanti software, qui vediamo come farla più o meno rapidamente con:


Join con Visidata

Medoto per realizzare una join tra due file con VisiData

  • Aprire la prima tabella res_italiani_stranieri_iso3166.csv da terminale vd res_italiani_stranieri_iso3166.csv;
  • Spostarsi nella colonna Nazione e renderla colonna chiave con !; 1
  • Aprire la seconda tabella pigiando il tasto o e scrivendo il nome del secondo file da aprire, in questo caso Elenco_denominazioni_Istat_full.csv;2
  • Spostarsi nella colonna Denominazione IT e renderla colonna chiave pigiando !;
  • Aprire il “foglio dei fogli” digitando Shift + s e selezionare, usando il tasto s, le due tabelle;
  • Digitare & per realizzare e visualizzare la JOIN tra le due tabelle: scrivere i e selezionare inner e pigiare Invio;
  • Dopo qualche secondo si vedrà la tabella con il join;
  • CTRL + s per salvare.

Join con Visidata | Palermo_residenti_ita+world_iso3166_lite.csv

Grazie a Totò Fiandaca per l'aiuto con la join 🙂 e grazie Andrea Borruso per la giuda in italiano, fondamentale per rielaborare i dataset usati in quest'esercizio.


Join con QGIS

Medoto per realizzare una join tra due file con Google sheets

  • Apriamo un nuovo progetto;
  • Importiamo i due dataset;
  • ➊ selezioniamo il file res_italiani_stranieri_iso3166;
  • ➋ Tasto dx del mouse ad aprire Proprieta si aprirà un poppu, cliccare su join;
  • ➌ Cliccare sul tasto +;
  • ➍ Si aprirà un nuovo popup Aggiungi vettore da unire;
  • ➎ Selezionare il file che si vuole unire e successivamente dai menù a tendina selezionare i campi da usare per la join;
  • ➏ Selezionare i campi che si vogliono unire;
  • ➐ In base alle proprioe esigenze si puo aggiungere un prefisso alle nuove colonne che vengono generate dalla jolin;
  • ➑ Cliccare su ok per creare la join;
  • Salvare/esportare la join;

Join con QGIS


Join con Google sheets

Medoto per realizzare una join tra due file con Google sheets

  • Apriamo un nuovo sheets;
  • Dal menù File navighiamo fino ad Impostazioni, e nel tab Generale cambiamo le impostazioni internazionali da Italia a Regno Unito;
  • Importiamo i due dataset in due fogli diversi;
  • Spostiamoci nel primo sheets res_italiani_stranieri_iso3166;
  • Selezioniamo cella C2;
  • Usiamo questa funzione (esempio) =IF(A2="","",VLOOKUP(B2,Elenco_denominazioni_istat!A:P,8,0)); 3
  • Google chiederà se la formula deve essere applicata a tutta la colonna, (compliazione automatica) cliccate su ok compliare a mano 359.9100 righe è dura...

Join con Google sheets

Cosa fa la funzione =IF(A2="","",VLOOKUP(B2,Elenco_denominazioni_istat!A:P,8,0))?

Se, nella cella A2 dello sheets Elenco_denominazioni_istat trova la chiave B2 dello sheets res_italiani_stranieri_iso3166 restituisce il valore della cella corrispondente nella colonna 8 dello sheets Elenco_denominazioni_istat

Per unire le altre colonne al nostro sheets, basta applicare la funzione a tutte le colonne dellì**Elenco_denominazioni_istat** che vogliano unire allo sheets res_italiani_stranieri_iso3166

Se vogliamo aggiungere la colonna 4 la Denominazione Continente (IT) la funzione è questa =IF(A2="","",VLOOKUP(B2,Elenco_denominazioni_istat!A:P,4,0)) e così via...


Dati Cartografici

Teoricamente non ho la necessità di aggiungere in questo nuovo dataset anche i campi con le informazioni sulle UPL, Quartieri e Circoscrizioni. Questa join posso farla direttamente in QGIS, per elaborare la mappa a dendità di punti, o con Tableau e flourish.studio per elaborare i dataviz, utilizzando la colonna Sezione di censimento per la join.

Visto che VisiData rende l'operazione semplissima, perchè non farla...? 🙂

Per questa nuova join, ho usato il nuovo dataset realizzato in predenza e il dataset sul territorio di Palermo (già elaborato per la base cartografica), entrambi hanno in comune la colonna delle Sezioni censuarie dell' ISTAT

Join con i dati sul territorio, aggiunte le colonne UPL, Quartiere e Circoscrizione | Palermo_residenti_ita+world_iso3166+territorio.csv

Queste nuove colonne possono tornare utili per produrre dataset di sintesi o di filtraggio con le query.
Esempio:

  • Popolazione residente per UPL | italiani e stranieri (per Continente, Area Geopolitita, Nazione ecc...)
  • Popolazione residente per Quartieri | italiani e stranieri (per Continente, Area Geopolitita, Nazione ecc...)
  • Popolazione residente per Circoscizioni | italiani e stranieri (per Continente, Area Geopolitita, Nazione ecc...)
  • Le principali nazionalità presenti e dove.

  1. La JOIN in VisiData viene fatto tra colonne chiave 

  2. Il TAB vi aiuta a completare il nome 

  3. VLOOKUP Ricerca verticale. Ricerca una chiave in tutta la prima colonna di un intervallo e restituisce il valore di una cella specificata nella riga trovata 

Torna su