Condividi:

Condividi su facebook
Condividi su twitter
Condividi su linkedin
Condividi su whatsapp
Condividi su telegram

Come esplorare un dataset?

Cosa bisogna andare a vedere e a visualizzare?

Ciao e bentornato al mio consueto articolo del venerdì su Python e il Data Science.

Dopo aver visto quali sono le strutture dati più utilizzate in Python e quali sono gli strumenti utili per condurre un’analisi dei dati corretta, oggi andiamo ancora più nel pratico.

Vediamo come andare ad esplorare un dataset vero e proprio.

Per farlo, andremo a considerare un dataset molto utilizzato nel mondo Data Science per chi è agli inizi nell’analisi dei dati e nello studio del Machine Learning: il dataset dei passeggeri del Titanic.

Non perdiamo tempo e salpiamo verso questa esplorazione, sperando di non incontrare nessun iceberg!

Prima di cominciare: dove trovo il dataset del Titanic?

Sono sicuro che ti sarai chiesto: ma dove posso trovare il dataset?

Esiste un sito molto interessate chiamato Kaggle.

Kaggle è un hub per la data science che ospita competizioni di machine learning.

E’ utilissimo per fare pratica: oltre a molti dataset realistici, si trovano centinaia di notebook con esempi pratici.

In particolare, il dataset del Titanic che andremo ad esplorare lo trovi qui.

Ora che sai dove puoi trovarlo, apri il tuo Jupyter Notebook (PS: se non sai cosa sia e come aprirlo ti consiglio di leggere questo mio articolo) e per caricarlo ti baserà importare Pandas e scrivere come in figura.

Usando la funzione read_csv(), sarai in grado di importare il dataset e di trasformalo direttamente in un DataFrame e quindi pronto per essere elaborato.

Mi raccomando: per importare il dataset assicurati di essere nella stessa cartella in cui il file .csv si trova.

Ora che è tutto pronto, iniziamo l’analisi.

L’esplorazione del dataset

Cosa abbiamo caricato dentro il DataFrame df?

Le funzioni head() e info() mostrano rispettivamente le prime (di default 5) righe del dataset e alcune informazioni sulle variabili identificate dalle colonne, come il tipo e i dati mancanti.


Per ottenere le dimensioni del dataframe si può usare la funzione shape(), mentre per vedere quali sono le sue colonne si può usare la funzione columns().

Per accedere ad i valori di una colonna specificandone il nome.

E’ possibile estrarre un insieme di colonne a partire dal loro nome con la sintassi:

df[col_list]

come puoi vedere in figura

Ora che sai come trattare un dataframe scaricato da un dataset vero e proprio, iniziamo ora a visualizzarne i dati.

Partiamo dal presupposto che in un’analisi dati, puoi far vedere qualsiasi cosa.

Sta a te decidere poi cosa mostrare e cosa no, cosa ti è sembrato significativo e cosa invece può essere trascurato.

Per esempio, in questa analisi voglio confrontare ogni variabile delle colonne del dataset con il rate di sopravvivenza uomo e donna, per vedere quali variabili possono essere significative per la creazione di un modello di predizione di sopravvivenza di una persona.

Ti mostrerò un po’ di grafici e alla fine cercheremo assieme di trarre qualche conclusione.

Utilizziamo Seaborn, quindi come sai se hai già letto gli articoli precedenti, va importata:

import seaborn as sns

Guardiamo prima di tutto quanti passeggeri si sono salvati e quanti no e lo facciamo usando un countplot().

Dalla descrizione del dataset, i passeggeri con valore della variabile Survived pari ad 1 si sono salvati , quelli a 0 no.

Si nota come solo il 38% dei passeggeri sia sopravvissuto.

Andiamo poi a vedere come sono distribuiti i passeggeri a livello del loro sesso e visualizziamo anche il rapporto sopravvissuti/uomo e sopravvissuti/donna, mettendoli a confronto.

Si nota come il numero di passeggeri donna sia molto superiore rispetto al numero di passeggeri uomo e che il rapporto numero di sopravvissuti su numero di donne sia più alto rispetto allo stesso rapporto fatto con gli uomini.

Questo ha senso, in quanto nel naufragio veniva data precedenza alle donne e bambini per accedere alle scialuppe di salvataggio.

Guardiamo ora la distribuzione dei passeggeri rispetto alla classe di viaggio.

Ci sono tre classi sulla nave e si nota che la maggior parte dei passeggeri apparteneva alla terza classe.

Si nota però che il rate medio di sopravvivenza non è uguale nelle tre classi.

Infatti circa il 63% dei passeggeri della prima e il 47% dei passeggeri della seconda sono stati salvati. Tale rate si riduce a poco più del 24% per la terza classe.

Si può anche confrontare il rate di sopravvivenza per il sesso e la classe.

Si nota come il 97% ed il 92% delle donne della prima e seconda classe siano state salvate.

Tale percentuale si riduce al 50% per le donne della terza classe.

Guardiamo come è la distribuzione dell’età tra i passeggeri.

Dal grafico a sinistra della figura, si nota come il valor medio dell’età dei passeggeri sia all’incirca sotto i 30 anni ma maggiore di 20 anni.

Guardando poi il grafico a destra, a prima vista, sembra esserci una correlazione tra sopravvivenza e giovane età come si vede dalla posizione del picco della curva in blu .

Vediamo cosa succede se confrontiamo questa variabile con il sesso dei passeggeri.

Si nota che tra gli uomini c’è un elevato numero di sopravvissuti sotto i 15 anni circa, a differenza delle altre età.

Passiamo ad analizzare la variabile relativa alla tariffa pagata per il biglietto di imbarco.

Usando la funzione describe(), possiamo avere una visione d’insieme della distribuzione e si nota che il massimo della tariffa è 512, la media è 32, il 75% è sotto il 31.

Se andiamo a rappresentare il tasso di sopravvivenza rispetto alla tariffa pagata, sembra che maggiore è stata la tariffa pagata, maggiore era la probabilità di sopravvivenza.

Questo è mostrato bene nel grafico a destra della figura sottostante

Se andiamo però a guardare meglio, gli uomini che hanno pagato una tariffa tra i 200 ed i 300, non sono sopravvissuti, quindi questa ipotesi non è vera.

Puoi vedere questo nella figura sottostante.

Consideriamo ora la variabile relativa al posto di imbarco.

Come si vede dalla figura precedente, il 70% passeggeri si è imbarcata da S (porto di Southampton).

In particolare si vede che dei passeggeri saliti a C (Cherborough), ci sono più sopravvisuti che non.

Non ci si aspetta che la sopravvivenza di un passeggero sia influenzata dal punto di imbarco.

Probabilmente questi valori sono dovuti al fatto che la maggior parte dei passeggeri di prima e seconda classe provenivano da quel porto. Verifichiamolo.

Questo dimostra quello che dicevamo.

Passiamo alla variabile Name.

Dal nome delle persone possiamo estrarre il titolo della persona (Mr,Miss etc).

Creo una nuova variabile chiamata Title.

Per aiutarmi nell’analisi, sostituisco i titoli maschili meno frequenti con Mr e tutti i titoli femminili meno frequent con Miss.

Andiamo a rappresentare il tasso di sopravvivenza rispetto al titolo considerato.

Si nota che per i titoli Miss e Mrs, il tasso di sopravvivenza è elevato.

Consideriamo ora la variabile SibSp, che indica per ogni persona  il numero di fratelli o sorelle o numero di coniugi.

Si può vedere che la maggior parte dei passeggeri ha viaggiato da sola o con al più uno tra fratelli, sorelle o coniugi.

Se guardiamo questo parametro in funzione del rate di sopravvivenza, si nota che chi ha viaggiato da solo abbia meno probabilità di sopravvivenza rispetto a chi ha viaggiato con uno o due fratelli/sorelle/coniugi.

Però, il rate si abbassa se si passa a 3 o 4 di questi.

La variabile Parch contiene il numero di di figli o genitori per ogni passeggero.

Come prima, si vede che chi ha viaggiato con dei bambini o dei genitori, aveva più probabilità di sopravvivere.

Conclusioni

Concludo questo articolo con alcune conclusioni sul dataset.

Dall’analisi che abbiamo fatto si può concludere che le variabili significative per andare ad allenare un modello di predizione possono essere

  • il sesso della persona
  • la classe di viaggio
  • la tariffa pagata
  • il titolo
  • il numero di fratelli e sorelle e coniugi
  • il numero di figli o genitori

Queste variabili potranno poi essere utilizzate in un modello di Machine Learning, il quale dopo essere stato allenato con una parte di questo dataset, potrà poi essere utilizzato per predire la sopravvivenza o meno di un passeggero.

Ovviamente, l’analisi dei dati poteva essere fatta in un qualsiasi altro modo e con altre ipotesi.

Se l’avresti fatta in un altro modo, fammelo sapere nei commenti, se vuoi!

In un prossimo articolo cercherò di spiegarti come allenare un modello di predizione!

Spero di averti incuriosito e di averti spinto ad approfondire queste tematiche.

Ci sentiamo presto!

Condividi su facebook
Condividi su twitter
Condividi su linkedin
Condividi su whatsapp
Condividi su telegram
Fabio Bernardini

Fabio Bernardini

Sono laureato in Ingegneria delle Telecomunicazioni e adesso lavoro come dottorando al Dipartimento di Ingegneria dell’Informazione a Pisa. Mi occupo di progettare sistemi di localizzazione in tempo reale in ambienti indoor o outdoor in ambito Internet of Things per l’Artificial Intelligence e il Data Science. Sono in costante contatto con persone che come me credono che l’Internet of Things sia la base per la rivoluzione digitale del nostro Paese. Per tale motivo creo contenuti su questo ambito e mi aggiorno continuamente.

Iscriviti
Notificami
guest
0 Commenti
Inline Feedback
Vedi tutti i commenti