Last chance! 50% off DataCamp Premium
Sale ends in
Qui sotto trovi un estratto — video e trascrizione — dal primo capitolo del corso Python intermedio per la Data Science. Qui trovi il capitolo completo, con esercizi interattivi.
Ciao, mi chiamo Filip e sono un data scientist in DataCamp. In questo corso intermedio di Python, migliorerai ulteriormente le tue competenze in Python per la data science. Imparerai a visualizzare i dati e a memorizzarli in nuove strutture dati. Nel frattempo, padroneggerai le strutture di controllo, che ti serviranno per personalizzare il flusso dei tuoi script e algoritmi. Concluderemo questo capitolo con un caso di studio, in cui metterai insieme tutto ciò che hai imparato per risolvere un problema interessante.
Questo primo capitolo riguarda la visualizzazione dei dati, una parte molto importante dell’analisi dei dati. Per prima cosa, la userai continuamente per esplorare il tuo dataset. Più capisci i tuoi dati, meglio saprai estrarre insight. E una volta trovati questi insight, ancora una volta ti servirà la visualizzazione per condividere le tue preziose scoperte con altre persone. Come esempio, guarda questo bellissimo grafico.
È stato realizzato dal professore svedese Hans Rosling. Le sue conferenze sullo sviluppo globale sono state viste milioni di volte. Ciò che le rende così coinvolgenti è che, creando grafici splendidi, lascia che siano i dati a raccontare la loro storia. Qui vediamo un bubble chart, in cui ogni bolla rappresenta un paese. Più grande è la bolla, più grande è la popolazione del paese, quindi le due bolle più grandi qui sono Cina e India.
Ci sono 2 assi. L’asse orizzontale mostra il PIL pro capite, in dollari USA. L’asse verticale mostra l’aspettativa di vita. Si vede chiaramente che le persone vivono più a lungo nei paesi con un PIL pro capite più elevato. Tuttavia, c’è una grande differenza nell’aspettativa di vita tra paesi con lo stesso livello di reddito.
Perché ti sto dicendo tutto questo? Perché alla fine di questo capitolo sarai in grado di costruire tu stesso questo bellissimo grafico.
In Python esistono molti pacchetti per la visualizzazione, ma la madre di tutti è matplotlib. Ti servirà il suo sotto-pacchetto pyplot. Per convenzione, questo sotto-pacchetto viene importato come plt, in questo modo.
Per il nostro primo esempio, proviamo a ottenere qualche insight sull’evoluzione della popolazione mondiale. Ho qui un elenco di anni, year, e un elenco delle popolazioni corrispondenti, espresse in miliardi, pop. Nell’anno 1970, ad esempio, sulla Terra vivevano 3,7 miliardi di persone.
Per tracciare questi dati come un grafico a linee, chiamiamo plt.plot() e usiamo le nostre due liste come argomenti. Il primo argomento corrisponde all’asse orizzontale, il secondo a quello verticale. Potresti pensare che il grafico compaia subito, ma Python è piuttosto pigro. Aspetterà la funzione show() per visualizzare effettivamente il grafico. Questo perché potresti voler aggiungere altri elementi al grafico prima di mostrarlo, come titoli e personalizzazioni delle etichette. Ne parlerò meglio più avanti. Ricorda solo questo: la funzione plot() dice a Python cosa tracciare e come tracciarlo. show() mostra effettivamente il grafico.
Guardando il nostro grafico, vediamo che gli anni sono effettivamente mostrati sull’asse orizzontale e le popolazioni su quello verticale. Ci sono quattro punti dati e Python disegna una linea tra di loro. Nel 1950, la popolazione mondiale era intorno ai 2,5 miliardi. Nel 2010, era intorno ai 7 miliardi. Quindi la popolazione mondiale è quasi triplicata in sessant’anni, il che è piuttosto inquietante. E se la popolazione continuasse a crescere così? Il mondo diventerà sovrappopolato? Lo scoprirai negli esercizi.
Lascia che ti presenti un altro tipo di grafico: lo scatter plot (diagramma a dispersione). Per crearlo, possiamo partire dal codice di prima. Questa volta, però, cambi la funzione da plot a scatter. Il grafico a dispersione risultante disegna semplicemente tutti i singoli punti dati; Python non unisce i punti con una linea. Per molte applicazioni, lo scatter plot è spesso una scelta migliore del line plot, quindi ricordati bene questa funzione scatter. Si potrebbe anche dire che è un modo più “onesto” di rappresentare i dati, perché si vede chiaramente che il grafico si basa su solo quattro punti dati.
Ora che abbiamo coperto le basi di matplotlib, tocca a te creare grafici fantastici!
# define a simple function
import matplotlib.pyplot as plt
year = [1950, 1970, 1990, 2010]
pop = [2.519, 3.692, 5.263, 6.972]
plt.plot(year, pop)
plt.show()
import matplotlib.pyplot as plt
year = [1950, 1970, 1990, 2010]
pop = [2.519, 3.692, 5.263, 6.972]
plt.scatter(year, pop)
plt.show()
In questo video ti presenterò l’istogramma. L’istogramma è un tipo di visualizzazione molto utile per esplorare i tuoi dati. Può aiutarti a farti un’idea della distribuzione delle tue variabili. Per vedere come funziona, immagina 12 valori tra 0 e 6. Li ho disposti qui lungo una retta numerica. Per costruire un istogramma per questi valori, puoi dividere la linea in parti uguali, chiamate “bin”. Supponiamo di scegliere 3 bin, ciascuno con ampiezza 2. Poi conti quanti punti dati rientrano in ciascun bin. Ci sono 4 punti dati nel primo bin, 6 nel secondo e 2 nel terzo. Infine, disegni una barra per ogni bin. L’altezza della barra corrisponde al numero di punti dati che cadono in quel bin. Il risultato è un istogramma, che ci dà una bella panoramica di come sono distribuiti i 12 valori. La maggior parte dei valori è al centro, ma ci sono più valori sotto 2 che sopra 4.
Ovviamente anche matplotlib è in grado di costruire istogrammi. Come prima, dovresti iniziare importando il pacchetto pyplot che fa parte di matplotlib. Poi puoi usare la funzione hist(). Apriamo la sua documentazione. Ci sono diversi argomenti che puoi specificare, ma i primi due sono i più importanti. x dovrebbe essere una lista di valori per cui vuoi costruire un istogramma. Puoi usare il secondo argomento, bins, per dire a Python in quanti bin dividere i dati. In base a questo numero, hist() troverà automaticamente i limiti appropriati per tutti i bin e calcolerà quanti valori ci sono in ciascuno. Se non specifichi l’argomento bins, il valore predefinito è 10.
Quindi, per generare l’istogramma che hai visto prima, iniziamo creando una lista con i 12 valori. Poi chiami semplicemente hist() e passi questa lista come input, così viene associata all’argomento x. Ho anche specificato l’argomento bins a 3, in modo che i valori siano suddivisi in tre bin. Se infine chiami la funzione show, ottieni un bell’istogramma. Gli istogrammi sono davvero utili per dare una visione d’insieme. Come esempio, guarda questa cosiddetta piramide della popolazione. Viene mostrata la distribuzione per età, sia per maschi che per femmine, nell’Unione Europea. Nota che gli istogrammi sono ruotati di 90 gradi; i bin ora sono orizzontali. I bin sono più grandi per le età 40–44, dove ci sono 20 milioni di maschi e 20 milioni di femmine. Sono i cosiddetti baby boomer.
Queste sono cifre dell’anno 2010. Cosa pensi che sarà cambiato nel 2050? Diamo un’occhiata. La distribuzione è più piatta e la generazione del baby boom è invecchiata. A colpo d’occhio puoi vedere facilmente come cambieranno le dinamiche demografiche nel tempo. È il vero potere degli istogrammi! Ora passa agli esercizi per sperimentare tu stesso con gli istogrammi!
values = [0,0.6,1.4,1.6,2.2,2.5,2.6,3.2,3.5,3.9,4.2,6]
import matplotlib.pyplot as plt
plt.hist(values,bins=3)
plt.show()
Creare un grafico è una cosa. Creare il grafico giusto, che renda chiarissimo il messaggio, è la vera sfida. Per ogni visualizzazione hai molte opzioni. Prima di tutto, ci sono i diversi tipi di grafico. E per ciascun grafico puoi fare un numero infinito di personalizzazioni. Puoi modificare colori, forme, etichette, assi e così via. La scelta dipende, uno, dai dati e, due, dalla storia che vuoi raccontare con quei dati. Dato che le possibili personalizzazioni sono tantissime, il modo migliore per imparare è con gli esempi.
Iniziamo con il codice in questo script per costruire un semplice grafico a linee. È simile al grafico a linee creato nel primo video, ma questa volta le liste year e pop contengono più dati, comprese le proiezioni fino al 2100, stimate dalle Nazioni Unite. Se eseguiamo questo script, otteniamo già un grafico piuttosto carino: mostra che l’esplosione della popolazione in corso rallenterà entro la fine del secolo.
Ma alcune cose si possono migliorare. Primo, dovrebbe essere più chiaro quali dati stiamo mostrando, soprattutto per chi vede il grafico per la prima volta. Secondo, il grafico deve davvero attirare l’attenzione sull’esplosione demografica. La prima cosa che devi sempre fare è etichettare gli assi. Facciamolo aggiungendo le funzioni xlabel() e ylabel() . Come input, passiamo stringhe che devono essere posizionate accanto agli assi. Assicurati di chiamare queste funzioni prima di chiamare il metodo show(), altrimenti le personalizzazioni non verranno visualizzate. Se eseguiamo di nuovo lo script, questa volta gli assi sono annotati. Aggiungiamo anche un titolo al nostro grafico, con la funzione title. Passiamo il titolo vero e proprio, "World Population Projections", come argomento. Ed ecco il titolo!
Quindi, usando xlabel, ylabel e title, possiamo dare al lettore più informazioni sui dati nel grafico: ora possono almeno capire di cosa tratta. Per mettere in prospettiva la crescita della popolazione, voglio che l’asse y parta da zero. Puoi farlo con la funzione . Il primo input è una lista, in questo esempio con i numeri da zero a dieci, a intervalli di 2. Se lo eseguiamo, il grafico cambierà: la curva si sposta verso l’alto. Ora è chiaro che già nel 1950 c’erano circa 2,5 miliardi di persone su questo pianeta.yticks()
Poi, per chiarire che stiamo parlando di miliardi, possiamo aggiungere un secondo argomento alla funzione yticks(), che è una lista con i nomi visualizzati per i tick. Questa lista deve avere la stessa lunghezza della prima. Il tick 0 ottiene il nome 0, il tick 2 ottiene il nome 2B, il tick 4 il nome 4B e così via. A proposito, qui B sta per Billions (miliardi). Se eseguiamo questa versione dello script, le etichette cambieranno di conseguenza, ottimo.
Infine, aggiungiamo qualche dato storico in più per mettere in risalto l’esplosione demografica negli ultimi 60 anni. Su Wikipedia ho trovato i dati sulla popolazione mondiale per gli anni 1800, 1850 e 1900. Posso scriverli sotto forma di lista e aggiungerli alle liste pop e year con il segno più. Se ora eseguo di nuovo lo script, tre punti dati vengono aggiunti al grafico, offrendo un quadro più completo. Ecco come trasformi un grafico a linee nella media in una visualizzazione con una storia chiara da raccontare! Ora tocca a te. Vai agli esercizi, personalizza gradualmente il grafico sullo sviluppo mondiale e diventa il prossimo Hans Rosling!
import matplotlib.pyplot as plt
import pandas as pd
year = list(range(1950, 2101))
pop = [2.53,2.57,2.62,2.67,2.71,2.76,2.81,2.86,2.92,2.97,3.03,3.08,3.14,3.2,3.26,3.33,3.4,3.47,3.54,3.62,3.69,3.77,3.84,3.92,4.,4.07,4.15,4.22,4.3,4.37,4.45,4.53,4.61,4.69,4.78,4.86,4.95,5.05,5.14,5.23,5.32,5.41,5.49,5.58,5.66,5.74,5.82,5.9,5.98,6.05,6.13,6.2,6.28,6.36,6.44,6.51,6.59,6.67,6.75,6.83,6.92,7.,7.08,7.16,7.24,7.32,7.4,7.48,7.56,7.64,7.72,7.79,7.87,7.94,8.01,8.08,8.15,8.22,8.29,8.36,8.42,8.49,8.56,8.62,8.68,8.74,8.8,8.86,8.92,8.98,9.04,9.09,9.15,9.2,9.26,9.31,9.36,9.41,9.46,9.5,9.55,9.6,9.64,9.68,9.73,9.77,9.81,9.85,9.88,9.92,9.96,9.99,10.03,10.06,10.09,10.13,10.16,10.19,10.22,10.25,10.28,10.31,10.33,10.36,10.38,10.41,10.43,10.46,10.48,10.5,10.52,10.55,10.57,10.59,10.61,10.63,10.65,10.66,10.68,10.7,10.72,10.73,10.75,10.77,10.78,10.79,10.81,10.82,10.83,10.84,10.85]
pop = [1,1.262,1.650] + pop
year = [1800,1850,1900] + year
plt.plot(year, pop)
plt.xlabel('Year')
plt.ylabel('Population')
plt.title('World Population Projections')
plt.yticks([0,2,4,6,8,10],['0','2B','4B','6B','8B','10B'])
plt.show()

blog
Abid Ali Awan
10 min
blog
Tim Lu
12 min

blog
Abid Ali Awan
15 min