class: center, middle, inverse, title-slide # Pulire e sistemare i dati ### Stefano Bussolon ### febbraio 2019 --- ## Sistemare i dati L'analisi dei dati è un processo finalizzato ad esplorare, ripulire, trasformare ed analizzare un insieme di dati. Ripulire e sistematizzare i dati è il primo passaggio, necessario per poter procedere nelle analisi esplorative, descrittive, inferenziali. --- ## La pulizia dei dati La *pulizia* dei dati consiste in primo luogo nell'analizzare i dati grezzi per verificare che la loro codifica sia corretta, ed identificare e correggere eventuali problemi di codifica. Questo passaggio trasforma i dati *grezzi* in dati *tecnicamente corretti*. In secondo luogo, questi dati vanno analizzati per verificare che la base di dati non contenga errori sostanziali. Questa *pulizia* trasforma i dati *tecnicamente corretti* in dati *consistenti*. [An introduction to data cleaning with R](https://cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf) --- ## Trasformare i dati, analizzarli La *trasformazione* / *sistematizzazione* dei dati consiste nell'organizzarli in maniera da facilitare la successiva analisi statistica. Il passaggio successivo costituisce l'analisi vera e propria (descrittiva, esplorativa, inferenziale). Infine, i risultati dell'analisi vanno sintetizzati attraverso la creazione di report. --- ## Pulizia: il processo Una volta caricato il file di dati, è opportuno in primo luogo controllarne la correttezza, attraverso un processo di *pulizia*. In secondo luogo, può essere necessario sistematizzare i dati se non sono rappresentati in forma canonica. --- ## Pulizia dei dati I dati sono *tecnicamente corretti* se * sono caricati in un data frame, i cui nomi di colonne siano corretti e significativi * ogni colonna è del tipo corretto: i dati numerici in vettori `numeric`, i dati testuali in vettori `character`, e le variabili categoriali in `factor` con livelli appropriati. Spesso può essere utile pre-processare i dati grezzi con strumenti diversi da R, ad esempio con degli editor di testo. Lo svantaggio di ripulire i dati a mano è che un processo di questo tipo non è facilmente automatizzabile, e dunque replicabile. Se le colonne contengono delle date, può essere necessario convertire il testo che rappresenta le date nei formati `POSIXlt` o `POSIXct`, ad esempio con la funzione `strptime`. --- ## Verifica di consistenza Il passaggio successivo consiste nel verificare che i dati, che da grezzi sono stati trasformati in *tecnicamente corretti*, siano anche *consistenti*. Si tratta di verificare se ci sono degli errori o dei problemi a livello di contenuti, ovvero valutare se ci sono dei dati esplicitamente sbagliati, dei dati incompleti o compromessi, degli outlier fuori norma. Questi dati vanno corretti se possibile, oppure eliminati se necessario. --- La verifica di consistenza è un processo che prevede * la definizione di vincoli che definiscono quel tipo di variabile o osservazione * l'identificazione di dati che violano i vincoli * la correzione dei dati, o loro eliminazione Particolare attenzione va prestata ai missing (NA). --- ## Gli outlier In questo contesto gli outlier sono osservazioni o insiemi di osservazioni che appaiono inconsistenti con il set di dati. In questa fase gli outlier vanno analizzati, per valutare se vi sono motivi per considerarli delle violazioni dei vincoli o se - semplicemente - sono delle osservazioni che si collocano ai margini delle distribuzioni. Alcune inconsistenze appaiono più palesi. Ad esempio, l'età di una persona non può essere negativa. --- ## Risorse * [An introduction to data cleaning with R](https://cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf) * [Tidy Data](https://vita.had.co.nz/papers/tidy-data.pdf) * [sfirke/janitor: simple tools for data cleaning in R](https://github.com/sfirke/janitor) * [Cleaning Data In R - Learn With Our Online Course | DataCamp](https://www.datacamp.com/courses/cleaning-data-in-r) * [r - Organized processes to clean data - Data Science Stack Exchange](https://datascience.stackexchange.com/questions/52/organized-processes-to-clean-data) * [RPubs - Cleaning Data in R](https://rpubs.com/williamsurles/291107) * [12 Tidy data | R for Data Science](https://r4ds.had.co.nz/tidy-data.html) * [data-wrangling-cheatsheet](https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf)