Data Cleaning nelle Scienze Umane

Laboratorio introduttivo alla pulizia dei dati con OpenRefine

Sebastian Barzaghi | https://www.unibo.it/sitoweb/sebastian.barzaghi2/ | sebastian.barzaghi2@unibo.it | https://orcid.org/0000-0002-0799-1527

Partiamo dai dati

Immagine: Redon, O. (1905–1916). *The Chariot of Apollo* [Oil on canvas, 26 x 32 in. (66 x 81.3 cm)]. Anonymous Gift, 1927. Accession No. 27.29.

Cosa sono i dati nelle scienze umane?

Un dato è qualsiasi valore assegnato a qualcosa che può essere quantificato, qualificato o interpretato in qualche modo per essere utilizzato come prova informativa.

Numeri, parole, immagini, video, foto, registrazioni audio, interviste, manoscritti, appunti, collezioni…

Per essere utili, i dati devono essere organizzati…

… per essere compresi da te in futuro.

… per essere leggibili dalle macchine (Interoperable secondo FAIR).

… per essere compresi dagli altri (Reusable secondo FAIR).

Tutti i dati sono disordinati

Non dare mai la qualità dei tuoi dati per scontato.

L'80% dell’analisi dei dati è dedicato al processo di pulizia dei dati e alla loro preparazione per ulteriori manipolazioni e analisi.

La pulizia e la preparazione devono essere iterative.

La pulizia e la preparazione sono necessarie per lavorare con i dataset.

Un dataset è una raccolta di dati

Ogni valore appartiene a una variabile e a un’osservazione.

Ogni variabile forma una colonna.

Ogni osservazione forma una riga.

Mythologiae

Un dataset di fonti iconografiche mitologiche (1/3)

Link: https://mythologiae.unibo.it/

Obiettivo: raccogliere un insieme di fonti iconografiche, classificarle, localizzarle rispetto agli istituti fisici di conservazione e creare un collegamento fra rappresentazione iconografica e fonti testuali di riferimento.

La collezione è il frutto di attività laboratoriali, in cui gli studenti sono stati chiamati a scegliere e interpretare opere d’arte eterogenee, provenienti da diverse realtà di conservazione.

Un dataset di fonti iconografiche mitologiche (2/3)

Il filo conduttore che lega fra di loro le opere della collezione è la scena mitologica che esse raffigurano.

Gli annotatori, dunque, non solo hanno compiuto un’analisi ermeneutica di ciascuna opera, assegnando una categoria concettuale (tema ricorrente) concordata sulla base di una tassonomia interna, ma hanno anche associato al tema, dove possibile, le opere letterarie da cui il tema ha tratto origine o quelle opere che lo hanno, in una qualche forma, ripreso.

Un dataset di fonti iconografiche mitologiche (3/3)

Ogni opera è descritta da una serie di metadati, per lo più con valori testuali, come titolo, autore, periodo, collocazione, e note.

Questo rende i dati contenuti in Mythologiae estremamente ricchi da una parte, ed estremamente poco strutturati dall’altra.

Inoltre, essendo stato compilato manualmente da diverse persone, alcuni dati contenuti nel dataset tendono ad essere disomogenei in termini di formato, separatori, ecc.

Errori comuni

La pulizia dei dati è difficile (ma ne vale la pena)!

Può essere riassunta in una serie di attività:

  • Preparare i dati;
  • Eliminare inutili ridondanze;
  • Separare o combinare i valori;
  • Gestire errori e incoerenze (esempio: duplicati, valori nulli, errori di ortografia o formattazione incoerenti, ecc.);
  • Standardizzare quando possibile.

Non modificare mai i dati originali

Fai sempre una copia prima di apportare modifiche.

Esegui il backup dei file.

Tieni traccia di tutti i passaggi.

Salva i tuoi file nella codifica UTF-8.

Descrivi sempre i dati

Documenta tutto il necessario per capire cosa c’è nel dataset e come utilizzarlo

Considera di indicare almeno:

  • Il “chi”, “cosa”, “quando”, “dove” e “come” dei dati;
  • Modalità di reperimento e accesso ai dati;
  • Suggerimenti sull’idoneità dei dati per rispondere a domande specifiche;
  • Avvertenze sui problemi o le incoerenze note nei dati;
  • Informazioni per verificare che i dati siano importati correttamente.

Usa formati standard per le tabelle (1/3)

https://r4ds.had.co.nz/tidy-data.html

Una colonna per ogni variabile.

Usa formati standard per le tabelle (2/3)

https://r4ds.had.co.nz/tidy-data.html

Una riga per ogni osservazione.

Usa formati standard per le tabelle (3/3)

https://r4ds.had.co.nz/tidy-data.html

Una cella per ogni valore.

Evita di aggregare commenti e altre informazioni con i dati (1/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html

Inserimento di più di un tipo di informazione in una cella (esempi: commenti, unità di misura, metadati, ecc.).

Evita di aggregare commenti e altre informazioni con i dati (2/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html

Aggiungi le informazioni aggiuntive al titolo della colonna o in una colonna separata.

Aggiungi i metadati in un documento separato.

Non utilizzare la formattazione per trasmettere informazioni (1/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/02-common-mistakes.html

Esempi: evidenziare celle, righe o colonne che dovrebbero essere escluse da un'analisi; lasciare righe vuote per indicare separazioni nei dati, ecc.

Non utilizzare la formattazione per trasmettere informazioni (2/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/02-common-mistakes.html

Aggiungi le unità al titolo della colonna o in una colonna separata.

Aggiungi le informazioni in una colonna separata.

Aggiungi i metadati in un documento separato.

Non utilizzare più tabelle o più schede

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html

Esempio: più di una tabella o scheda all'interno di un singolo foglio di calcolo.

Se possibile, combina tutto in una tabella unica o mantieni ogni tabella in un file separato.

Non utilizzare caratteri speciali

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html

Se possibile, evita caratteri speciali nei titoli delle colonne e nel testo: / \ : * . ? < > [ ] ( ) & $ æ Æ ...

Evita sempre di utilizzare spazi nei titoli delle colonne: invece, utilizza underscore (_) o CamelCase (esempio: TitoloPrincipale).

Sii coerente

  • Scenario 1: date visualizzate in molti formati diversi (esempi: “12 luglio 2024”, “12/07/2024”, “12-07-2024”, ecc.);
    • Utilizza standard internazionali (esempi: EDTF);
  • Scenario 2: nomi visualizzati in molte varianti diverse (esempi: “Alessandro Manzoni”, “A. Manzoni”, “Manzoni”, “Manzoni, Alessandro”, ecc.);
    • Utilizza record di autorità (esempi: VIAF);
  • Sii coerente anche nella capitalizzazione delle parole, nella scelta dei delimitatori e nelle convenzioni di denominazione per le variabili;
  • Evita di utilizzare il delimitatore usato dal dataset (esempi: ,, ;, /, ecc.) nei dati stessi;
  • Fai attenzione agli spazi!

Elimina la ridondanza (con cautela!)

Nell’eliminazione includi:

  • Duplicati;
  • Osservazioni irrilevanti;
  • Dati incompleti;
  • Dati non validi;
  • Dati in conflitto.

Sono tutte interpretazioni: considera sempre se un’osservazione o una colonna debbano essere eliminate o meno!

Tratta sempre i valori NULL

Usa un metodo coerente che sia compatibile e che non causi errori (come lasciare la cella vuota).

Considera che:

  • Può essere difficile sapere se un valore è mancante o è stato trascurato durante l’inserimento dei dati;
  • Gli spazi vuoti possono essere confusi quando spazi ( ) o tabs (/) sono usati come delimitatori;
  • NA e NULL sono valori nulli ragionevoli.

Esegui sempre un controllo di qualità

Verifica:

  • Errori grammaticali;
  • Uso incoerente di maiuscole e minuscole;
  • Titoli incoerenti per le colonne;
  • Unità di misura incoerenti, tipi di dati incoerenti (esempio: numero, stringa), schemi di denominazione, ecc.;
  • Valori fuori intervallo.

Quando hai finito, esporta e condividi

Utilizza una licenza aperta per far sapere agli altri esattamente cosa possono e non possono fare con i dati (esempio: Creative Commons Zero (CC0)).

Utilizza formati aperti per rendere i dati interoperabili (esempio: CSV), quando possibile.

Considera di condividere i tuoi dati su GitHub e/o di pubblicarli su un repository (esempio: Zenodo, Figshare, ecc.) per renderli visibili, accessibili e stabili.

OpenRefine

Uno strumento per la pulizia dei dati

OpenRefine permette di:

  • Identificare e correggere errori;
  • Combinare dati da diverse fonti;
  • Non modifica il file originale;
  • Tutte le azioni sono reversibili e tracciate;
  • La documentazione può essere pubblicata insieme ai dati;
  • Il flusso di lavoro può essere salvato e applicato a nuovi dataset.

Alcuni scenari di utilizzo

  • Vuoi sapere quante volte un particolare valore appare in una colonna nei tuoi dati;
  • Vuoi sapere come i valori sono distribuiti in tutto il dataset;
  • Vuoi normalizzare date formattate in modi diversi ad un unico formato comune;
  • Vuoi normalizzare nomi o termini che, pur riferendosi alle stesse entità, differiscono tra loro;
  • Vuoi separare frammenti di dati combinati insieme in dati individuali;
  • Vuoi allineare i dati a una fonte esterna.

Installazione di OpenRefine

Creazione di un progetto (1/3)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Scarica il dataset Mythologiae (link in chat);
  • In Create Project > This computer, clicca su Choose files e carica mythologiae-dataset.csv;
  • Clicca su Next.

Creazione di un progetto (2/3)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • In Parse data as > CSV / TSV / separator-based files;
  • Character encoding deve avere UTF-8 come valore;
  • Seleziona Columns are separated by > commas (CSV);
  • Spunta Use character " to enclose cells containing column separators;
  • Spunta Trim leading & trailing whitespace from strings.

Creazione di un progetto (3/3)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Seleziona Parse next 1 line(s) as column headers;
  • Spunta Store blank rows;
  • Spunta Store blank cells as nulls;
  • Clicca su Create project.

Schermata del progetto (1/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Permalink ti consente di tornare ad uno stato di visualizzazione specifico del progetto, con filtri e faccette applicati, inserendo informazioni specifiche della visualizzazione direttamente nell'URL.

Schermata del progetto (2/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Open apre una nuova scheda del browser mostrando la schermata di creazione del progetto per modificare le impostazioni, avviare un nuovo progetto o aprire un progetto esistente;
  • Export ti consente di selezionare un formato per esportare il dataset;
  • Help apre una nuova scheda del browser contenente un manuale utente.

Schermata della griglia

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Visualizzazione dei dati in formato tabellare;
  • Numero totale di righe;
  • Modalità rows vs modalità records;
  • Numero di righe/record visibili su schermo contemporaneamente.

Facet/Filter

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html

Modi principali per esplorare i dati, mostrando pattern, tendenze e sottogruppi;

  • Refresh aggiorna ciascuna facet con le informazioni più recenti;
  • Reset all resetta tutte le faccette senza rimuoverle;
  • Remove all rimuove tutte le faccette.

Undo/Redo

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Storico del progetto come elenco di modifiche in ordine cronologico;
  • Salvataggio automatico ogni 5 minuti e alla chiusura con CTRL + C;
  • Ogni attività che modifica i dati può essere annullata;
  • La cronologia delle modifiche di ciascun progetto è salvata insieme al progetto stesso.

Modalità rows

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Row: una serie di celle, una cella per colonna;
  • A volte, ci sono più informazioni in una singola cella (esempio: dcho_keyword);
  • In questi casi, se riesci a dividere correttamente questi valori, puoi utilizzare la modalità records di OpenRefine per visualizzarli correttamente.

Modalità records

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Record: una collezione di una o più righe;
  • Le molteplici informazioni in una singola cella (esempio: dcho_keyword), una volta divise, vengono visualizzate ognuna in una riga diversa, ma appartengono allo stesso record;
  • Funziona dopo aver eseguito uno split, un'operazione che vedremo tra poco.

Esplora i dati con le Facet (1/2)

Facet: un aspetto della varianza dei dati in una colonna.

Fornisce una visione d’insieme dei dati.

Consente ulteriori operazioni, come il filtraggio e il clustering.

Esplora i dati con le Facet (2/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Tipicamente, crei una facet su una particolare colonna;
  • Fai clic sul triangolo davanti al nome della colonna (esempio: dcho_theme);
  • Seleziona Facet;
  • Seleziona una facet a tua scelta (esempio: Text facet).

Text facet (1/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Prende il contenuto totale delle celle della colonna in questione e le abbina;
  • Ordina per nome o conteggio;
  • Modifica in massa ogni cella identica nella colonna;
  • Ottimo per esaminare i dati e correggere errori di battitura, spazi in eccesso, ecc.

Text facet (2/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Molteplici facet sono impilate una sopra l'altra (esempio: nell'immagine viene aggiunta cho_author).

Filter (1/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • I filtri possono essere aggiunti su una colonna;
  • Utili per identificare più precisamente dei dati;
  • Clicca sulla freccia e seleziona Text filter.

Filter (2/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • I filtri condividono lo stesso spazio con le facet;
  • Digita il testo da cercare (esempio: "edipo") per restituire le righe con quel testo contenuto in quella colonna;
  • Sensibilità alle maiuscole e minuscole disattivata di default.

Filtrare con i Facet (1/3)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • È possibile filtrare anche tramite facet;
  • Clicca su qualsiasi voce in un filtro (esempio: "Allston, Washington" nella facet cho_author);
  • Vengono visualizzate solo le righe con quel valore in quella colonna.

Filtrare con i Facet (2/3)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Puoi usare più facet per migliorare il filtraggio.

Filtrare con i Facet (3/3)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Puoi usare facet personalizzati per ottenere determinati effetti (esempio: filtrare le righe con celle vuote).

Sort (1/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Puoi determinare l'ordine in cui vengono mostrate le righe in base ad alcune condizioni.
  • Clicca sulla freccia e seleziona Sort.

Sort (2/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Seleziona come trattare i valori delle celle durante l'ordinamento (esempio: se sono date, molto probabilmente vorrai selezionare date);
  • Puoi anche selezionare l'ordine effettivo (esempio: prima tutti i valori validi, poi quelli errati, poi quelli mancanti);
  • Clicca su OK.

Cluster (1/3)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Un ottimo modo per correggere le incongruenze trovate con le facet;
  • Utilizza una varietà di metodi di confronto per trovare diciture simili ma non identiche, e mostrarle in modo da rendere possibile l'allineamento dei valori che dovrebbero essere uguali;
  • Crea una facet;
  • Clicca su Cluster.

Cluster (2/3)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Clicca su Cluster;
  • Prova diversi algoritmi per rilevare vari cluster;
  • Per ogni cluster, puoi unire i valori sostituendoli con un valore unico e coerente;
  • Per impostazione predefinita, il valore più comune nel cluster viene utilizzato come nuovo valore, ma puoi cambiarlo.

Cluster (3/3)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Prova diversi algoritmi per rilevare vari cluster;
  • Per ogni cluster, puoi unire i valori spuntando Merge?;
  • Clicca su Merge selected & re-cluster per verificare e su Merge selected & Close per terminare.

Modifica delle celle

OpenRefine offre numerose funzionalità per modificare e migliorare il contenuto delle celle in modo automatico ed efficiente.

  • Modifica tramite una facet di testo: clicca su Edit a destra della facet e inserisci un nuovo valore;
  • Utilizzo della funzione trova/sostituisci: seleziona Edit cells > Replace per inserire una stringa da cercare e una stringa da sostituire;
  • Modifica delle singole celle: passa il mouse su una cella e clicca su Edit.

Split (1/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • A volte una cella può contenere più valori (esempio: colonna dcho_keyword, con più valori separati da virgole ,);
  • Fondamentale per la modalità records;
  • Fai clic sulla freccia e seleziona Edit cells;
  • Seleziona Split multi-valued cells.

Split (2/2)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Puoi decidere come dividere le celle;
  • Idealmente, dovresti sempre usare nel testo un separatore (esempio: ,, |, ;, ecc.), e indicarlo qui;
  • Clicca su OK.

Transform

Un meccanismo potente per applicare modifiche che non possono essere ottenute tramite semplici facet, filtri o cluster.

  • Eliminare spazi bianchi iniziali e finali;
  • Dividere i dati in più colonne;
  • Rimuovere la punteggiatura;
  • Standardizzare un formato di dati;
  • Estrarre un particolare tipo di dati da una stringa di testo.

Possono essere preimpostate o scritte ad hoc in un linguaggio chiamato GREL.

Reconcile (1/5)

Processo semi-automatico di allineamento dei dati a fonti esterne.

Utile per:

  • Correggere errori di ortografia o variazioni nei nomi propri;
  • Pulire i valori inseriti manualmente confrontandoli con file di autorità;
  • Collegare i tuoi dati a un dataset esistente.

È necessario il giudizio umano per rivedere e approvare i risultati.

Avviene di default tramite ricerca di stringhe, quindi pulisci e raggruppa i dati prima di riconciliarli!

Reconcile (2/5)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Clicca sulla freccia e seleziona Reconcile;
  • Seleziona Start reconciling.

Reconcile (3/5)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Seleziona il servizio di riconciliazione (esempio: VIAF);
  • Clicca su Next.

Reconcile (4/5)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • A seconda della colonna e del servizio di riconciliazione selezionato, scegli il tipo di entità che desideri riconciliare (esempio: Person);
  • Clicca su Start reconciling.

Reconcile (5/5)

https://datacarpentry.org/spreadsheet-ecology-lesson/01-format-data.html
  • Alcuni valori delle celle vengono riconciliati direttamente (esempio: Houdon, Jean Antoine);
  • Altri richiedono una validazione manuale (esempio: Gérard, Francois Baron);
  • Cliccare sul segno di spunta singolo per riconciliare solo quella cella, o sul segno di spunta doppio per estenderlo a tutte le celle identiche.

Cosa fare

Le vostre task

Abbiamo individuato quattro colonne problematiche che richiedono una pulizia approfondita dei dati:

  • dcho_theme: il tema mitologico individuato nell’opera;
  • cho_century: il secolo a cui risale l’opera;
  • cho_date: la data di creazione dell’opera;
  • cho_sources_classic: le fonti classiche associate al tema mitologico individuato nell’opera.

dcho_theme (1/2)

  • Impostare un separatore comune (|), sostituendo quindi quello esistente (ricordati di rimuovere anche gli spazi vuoti prima e/o dopo!);
  • Dividere i valori (split);
  • Raggruppare i valori (cluster);
  • Normalizzare i valori NULL (esempio: Non categoriaNULL);
  • Mantenere solo l’ultimo valore a destra se c’è una gerarchia, solitamente indicata da una sequenza di termini separati da >;
    • Esempio: Gli dèi>EfesoEfeso;
    • Esempio: Saghe familiari e epiche>Enea>Enea e Didone innamoratiEnea e Didone innamorati.

dcho_theme (2/2)

  • Standardizzare quando possibile (vedi Iconclass):
    • Iscriviti e accedi a Iconclass;
    • Cerca il tema nella barra di ricerca;
    • Scegli l’opzione più appropriata (magari sarà necessario adattarsi un po’);
    • Aggiungi al tema esistente nel dataset l’identificativo dell’opzione trovata tra parentesi e preceduto da Iconclass::
      • Esempio: L’Enigma della SfingeL'Enigma della Sfinge (Iconclass:94T33);
      • Esempio: Eracle cattura il cinghiale di ErimantoEracle cattura il cinghiale di Erimanto (Iconclass:94L324);
    • Se non lo trovi, lascia il valore così com’è (dopo averlo ovviamente pulito e corretto).

cho_century

  • Raggruppare i valori (cluster);
  • Modificare (Esempio: eliminare le virgole);
  • Normalizzare i valori NULL (Esempio: cella vuota → NULL).
  • Standardizzare (vedi EDTF):
    • Rappresentazione delle date CE (d.C.): [YYYY]([“-”][MM])([“-”][DD]);
      • Esempio: “20 giugno 1992” → 1992-06-20;
    • Rappresentazione delle date BCE (a.C.): ["-"][YYYY]([“-”][MM])([“-”][DD]);
      • Esempio: “1800 a.C.” → -1800;
    • Rappresentazione dei periodi: [YYYY]["/"][YYYY];
      • Esempio: “II secolo” → 0100/0199;
      • Esempio: “II secolo a.C.” → -0199/-0100.

cho_date (1/2)

  • Impostare un separatore comune (|), sostituendo quindi quello esistente (ricordati di rimuovere anche gli spazi vuoti, prima e/o dopo!);
  • Dividere i valori (split);
  • Raggruppare i valori (cluster);
  • Normalizzare i valori NULL (esempio: cella vuota → NULL);
  • Standardizzare (vedi EDTF):
    • Rappresentazione delle date CE (d.C.): [YYYY]([“-”][MM])([“-”][DD]): anno a quattro cifre obbligatorio, mese e giorno a due cifre facoltativi a seconda della precisione della data esistente;
      • Esempio: 19921992;
      • Esempio: Maggio 19921992-05;
      • Esempio: 8 maggio 19921992-05-08;
      • Esempio: 640 d.C.0640;
    • Rappresentazione delle date BCE (a.C.): ["-"][YYYY]([“-”][MM])([“-”][DD]);
      • Esempio: 460 a.C.-0460;
      • Esempio: 1500 a.C.-1500;

cho_date (2/2)

  • Standardizzare (vedi EDTF):
    • Rappresentazione dei periodi CE: [YYYY]["/"][YYYY];
      • Esempio: “1705-1706” → 1705/1706
      • Esempio: “550-530 a.C.” → -0550/-0530;
    • Rappresentazione dell’incertezza: [date]["%"];
      • Nel dataset l’incertezza è indicata con una certa varianza (ca., circa, ecc.), da eliminare di conseguenza e sostituire con % alla fine della data;
      • Esempio: 1590 circa1590%;
      • Esempio: 1705-1706 ca.1705/1706%;
      • Esempio: ca 403 a.C.-0403%;
      • Esempio: Sconosciuta (fra il 1635 e il 1700)1635-1700&.

cho_sources_classic (1/4)

  • Impostare un separatore comune (|), sostituendo quindi quelli (plurale!) esistenti (ricordati di rimuovere anche gli spazi vuoti, prima e/o dopo!);
    • Un piccolo anticipo: alcune celle, pur avendo valori separabili, non hanno un separatore (quindi usa il buonsenso e correggi manualmente);
    • Esempio: Ovidio, Le Metamorfosi, I, vv. 750 e ss, Igino, Fabulae, 161, Callimaco, Inni, Inno ad ApolloOvidio, Le Metamorfosi, I, vv. 750 e ss|Igino, Fabulae, 161|Callimaco, Inni, Inno ad Apollo;
  • Dividere i valori (split);
  • Raggruppare i valori (cluster);
  • Normalizzare i valori NULL (esempio: cella vuota → NULL);
    • Attenzione: usa NULL solo per le celle già vuote, prima dello split; se tra più citazioni ne hai una vuota, elimina solo quella e mantieni le altre;
    • Esempio: Apollod. 3.5.8| |Hdt. 2.175Apollod. 3.5.8|Hdt. 2.175;
    • Esempio: cella vuota → NULL;

cho_sources_classic (2/4)

  • Standardizzare (vedi Perseus):
    • Cerca la citazione su Perseus;
    • Scegli l’opzione più appropriata;
    • Sostituisci la citazione esistente nel dataset con l’opzione trovata:
      • Esempio: Apollodoro, Biblioteca, II 5Apollod. 2.5;
      • Esempio: Omero, Odissea, XI vv.601-604Hom. Od. 11.601-604;
      • Esempio: Omero, Odýsseia, Lib. X - Lib. XII, VI secolo a.C.Hom. Od. 10-12;
      • Esempio: Apollodorus, EpitomeApollod. Epit.
      • Esempio: Publio Ovidio Nasone, Metamorphoseon libri XV, Lib. XIV, fine VIII secolo d.C.Ov. Met. 15;

cho_sources_classic (3/4)

  • Le citazioni non canoniche vanno salvate così come sono in una colonna separata cho_sources_other, sempre con | come separatore, anche se non le trovate su Perseus;
    • Esempio: Omero, Odýsseia, Lib. X - Lib. XII, VI secolo a.C.; Publio Ovidio Nasone, Metamorphoseon libri XV, Lib. XIV, fine VIII secolo d.C.;Omero, Odýsseia, Lib. X - Lib. XII, VI secolo a.C.|Publio Ovidio Nasone, Metamorphoseon libri XV, Lib. XIV, fine VIII secolo d.C.;
  • Le citazioni consecutive (magari separate da una virgola, o uno spazio) vanno esplicitate separatamente;
    • Esempio: Diod. 1.16, 4.61Diod. 1.16|Diod. 4.61;
    • Esempio: Hes. Th. 304 327-335Hes. Th. 304|Hes. Th. 327-335;

cho_sources_classic (4/4)

  • Testo superfluo come ss. va eliminato;
    • Esempio: Hes. Theog. 288 ss.Hes. Th. 288;
    • Esempio: Eneide II 594-620 “Figlio quale grande dolore suscita indomabili ire?” (trad. Luca Canali)Hom. Aen. 2.594-620;
    • Esempio: Altre fonti su Enea: Omero, IliadeHom. Il.;
  • Non dimenticare di eliminare eventuali spazi tra i numeri (sostituendoli ove necessario con un punto), oppure di aggiungerli se mancano tra i nomi e i numeri:
    • Esempio: Hes. Th.287-295Hes. Th. 287-295;

Altre colonne

  • Tutte: normalizzare i valori NULL, correggere i refusi, sostituire i separatori con |, fate attenzione agli spazi;
  • dcho_keyword: dividere, raggruppare, modificare (mantenere solo italiano);
  • cho_author: raggruppare, modificare, riconciliare con VIAF (“Person”);
  • cho_period: raggruppare, modificare;
  • cho_type: raggruppare, modificare;
  • cho_location: raggruppare, modificare, riconciliare con VIAF (“Organization”).

Conclusioni

Potete già fare molto per aumentare la qualità dei dati! Riassumendo:

  • Esplorate i dati utilizzando facet, filtri e sorting;
  • Trasformate i dati tramite: modifiche singole e di massa, raggruppamenti (cluster), divisioni (split) e sostituzioni;
  • Riconciliate i dati con fonti esterne, quando possibile, automaticamente o manualmente;
  • Ricordate che potete sempre tornare indietro.

Data Cleaning nelle Scienze Umane

Fine

Sebastian Barzaghi | https://www.unibo.it/sitoweb/sebastian.barzaghi2/ | sebastian.barzaghi2@unibo.it | https://orcid.org/0000-0002-0799-1527