COVID-19

COVID-19 Dataset Test – Machine Learning

Purtroppo, come ormai tutti sappiamo e quotidianamente viviamo, ci troviamo in un periodo difficile dove la pandemia di COVID19 è causa di danni irreversibili all’economia e alla salute della popolazione mondiale

Possiamo sfruttare questa situazione in modo da poter analizzare dei dati importanti e fare delle previsioni tramite l’utilizzo dei nostri modelli di Machine Learning. Vediamo come.

Il dataset contiene le seguenti informazioni: 

  • Paese: questo è il paese per il quale vengono fornite le informazioni sulla vaccinazione; 
  • Codice ISO del paese ; 
  • Data – data per l’inserimento dei dati; per alcune date abbiamo solo le vaccinazioni giornaliere, per altre solo il totale (cumulativo); 
  • Numero totale di vaccinazioni: questo è il numero assoluto di vaccinazioni totali nel paese; 
  • Numero totale di persone vaccinate: una persona, a seconda dello schema di immunizzazione, riceverà uno o più (tipicamente 2) vaccini; a un certo momento, il numero di vaccinazioni potrebbe essere maggiore del numero di persone; 
  • Numero totale di persone completamente vaccinate: questo è il numero di persone che hanno ricevuto l’intero set di immunizzazione secondo lo schema di immunizzazione (in genere 2); in un certo momento, potrebbe esserci un certo numero di persone che hanno ricevuto un vaccino e un altro numero (più piccolo) di persone che hanno ricevuto tutti i vaccini nel programma; 
  • Vaccinazioni giornaliere (non elaborate) – per una determinata immissione di dati, il numero di vaccinazioni per quella data / paese; 
  • Vaccinazioni giornaliere – per una determinata immissione di dati, il numero di vaccinazioni per quella data / paese; 
  • Vaccinazioni totali per cento – rapporto (in percentuale) tra il numero di vaccinazioni e la popolazione totale fino alla data nel paese; 
  • Numero totale di persone vaccinate per cento – rapporto (in percentuale) tra la popolazione immunizzata e la popolazione totale fino alla data nel paese; 
  • Numero totale di persone completamente vaccinate per cento – rapporto (in percentuale) tra la popolazione completamente immunizzata e la popolazione totale fino alla data nel paese; 
  • Numero di vaccinazioni al giorno – numero di vaccinazioni giornaliere per quel giorno e paese; 
  • Vaccinazioni giornaliere per milione – rapporto (in ppm) tra numero di vaccinazioni e popolazione totale per la data corrente nel paese; 
  • Vaccini utilizzati nel paese – numero totale di vaccini utilizzati nel paese (aggiornato); 
  • Nome della fonte – fonte dell’informazione (autorità nazionale, organizzazione internazionale, organizzazione locale ecc.); 
  • Sito Web di origine: sito Web della fonte delle informazioni;
Voglio specificare che i dati sono messi a disposizione e totalmente raccolti da Our World in Data

Gli obbiettivi del progetto

Questo tipo di lavoro richiede di tenere traccia della vaccinazione COVID-19 nel mondo e in maniera più approfondita:

  • Quale paese sta usando quale vaccino
  • In quale paese il programma di vaccinazione è più avanzato
  • Dove vengono vaccinate più persone al giorno? Ma in termini di percentuale dell’intera popolazione?
Leggi articolo   Il fattoriale ricorsivo

Come sviluppiamo il lavoro

Come per ogni esercizio di programmazione, anche in questo caso consiglio vivamente di sviluppare un’analisi ben dettaglia sul procedimento da eseguire in modo che ci aiuti sui passaggi da eseguire per portare a termine il progetto.

Importiamo le librerie necessarie ed eseguiamo la describe

				
					import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt
import plotly.express as px

covid_file_path ="country_vaccinations.csv"

covid_df = pd.read_csv(covid_file_path)
				
			

Il Dataset COVID-19 è facilmente scaricabile da qui:

				
					covid_df.describe()

				
			
COVID-19

A questo punto, data un’occhiata al nostro dataset, andiamo a eliminare i dati che non sono utili al progetto tramite la funzione drop. In questo caso source_name e source_website non forniscono informazioni che possono condizionare l’esito della nostra analisi.

				
					covid_df.drop(columns=['source_name', 'source_website'], axis=0, inplace=True)
covid_df.head()
				
			
COVID-19

In quale paese il programma di vaccinazione è più avanzato?

Per rispondere a questa domanda dobbiamo raccogliere più informazioni possibili per quanto riguarda il numero di vaccinati per ogni paese e cercare di rendere pulito il nostro dataset COVID-19 eliminando i dati senza valore (NaN). 

Otteniamo il valore più recente di numero di vaccinati per paese in questo modo:

				
					total_people_fully_vaccinated = covid_df.groupby(by=['country'], sort=False,as_index=False)['people_fully_vaccinated'].max()

total_people_fully_vaccinated.isnull().sum()
				
			

E a questo punto eliminiamo i NaN:

				
					total_people_fully_vaccinated = total_people_fully_vaccinated.dropna()

total_people_fully_vaccinated.shape
				
			

Andiamo, infine, a rappresentare graficamente tramite l’utilizzo del libreria plotply il numero di vaccinati per i migliori 20 paesi: 

				
					top20_people_fully_vaccinated = total_people_fully_vaccinated.nlargest(20,columns = ['people_fully_vaccinated'])

fig = px.bar(x = top20_people_fully_vaccinated['country'], y= top20_people_fully_vaccinated['people_fully_vaccinated'],
            labels={"x": "Country", "y": "Total People Fully vaccinated"},
             )
fig.show()
top20_people_fully_vaccinated
				
			

Come possiamo capire dal grafico, gli Stati Uniti sono lo stato che ha maggiori vaccinati e per questo motivo siamo in grado di rispondere alla seconda domanda affermando che proprio quest’ultimi hanno il programma di vaccinazione più avanzato. 

Leggi articolo   Max di una lista
COVID-19

Quali tipi di paese utilizzano un determinato vaccino ?

Iniziamo ad analizzare la situazione vaccini per paese. Come facciamo a calcolare quanti vaccini sono stati utilizzati e quale casa produttrice ne fornisce in quantità maggiori ?

				
					groupby_country_vaccine = covid_df.groupby(by=['country','vaccines'], sort=False, as_index=False)['total_vaccinations'].max()

top_vaccines = groupby_country_vaccine.groupby(by=['vaccines'], sort=False, as_index=False)['total_vaccinations'].sum()

top20_vaccines = top_vaccines.nlargest(20,columns = ['total_vaccinations'])


fig = px.bar(x=top20_vaccines['total_vaccinations'], y=top20_vaccines['vaccines'],
            labels={"x": "Total vaccinations", "y": "Vaccine Company"},
             )
fig.show()

top_vaccines
				
			

Analizzando il codice capiamo che abbiamo raggruppato paesi e vaccini con il totale delle vaccinazioni, successivamente calcolato la somma di tutti i vaccini prodotti da ogni casa produttrice in modo da realizzare un grafico che ci faccia capire come sono suddivise le quantità:

COVID-19

Ora è possibile dichiarare che Johnson&Johnson, Moderna e Pfizer hanno prodotto e contribuito alla vaccinazione mondiale in maniera più consistente rispetto alle altre case produttrici.

Cerchiamo ora di capire che tipo di vaccino è stato utilizzato in diversi paesi in modo da avere una panoramica ben dettagliata:

				
					cntry_total_vaccinations = covid_df.groupby(['country']).max()[["total_vaccinations", "vaccines"]].reset_index()
cntry_total_vaccinations
				
			

Ho raggruppato il totale delle vaccinazione per ogni paese con le case produttrici, questo è il risultato:

COVID-19

Una volta capito che tipo di vaccino utilizza ogni paese andiamo a vedere qual è il paese che ha più vaccinati in termine di percentuale in modo da completare la domanda uno. Andiamo così a raggruppare i paesi e calcoliamo la percentuale della popolazione vaccinata per il COVID-19:

				
					people_fully_vaccinated_percentage = covid_df.groupby(by=['country'], sort = False, as_index = False)['people_fully_vaccinated_per_hundred'].max()

people_fully_vaccinated_percentage.isnull().sum()
				
			

Eliminiamo i dati nulli NaN e prendiamo i primi 20 paesi per percentuale:

				
					people_fully_vaccinated_percentage.dropna()

top20_people_fully_vaccinated_percentage = people_fully_vaccinated_percentage.nlargest(20,columns=['people_fully_vaccinated_per_hundred'])

top20_people_fully_vaccinated_percentage
				
			

Ovviamente i paesi con minore densità di popolazione avranno una maggiore percentuale di popolazione vaccinata, come possiamo vedere dalla tabella precedente. Gibilterra si posiziona al primo posto !

				
					fig = px.bar( x = top20_people_fully_vaccinated_percentage['people_fully_vaccinated_per_hundred'] , 
y = top20_people_fully_vaccinated_percentage['country'], labels = {"x" : "People Fully Vaccinated in %", "y": "Country"})

				
			

Progresso della vaccinazione nel tempo

I vaccini COVID-19 sono stati somministrati per la prima volta all’inizio di dicembre 2020. Controlliamo per vedere come il mondo ha compiuto progressi nel numero totale di vaccinazioni e le persone completamente vaccinate negli ultimi mesi.

Leggi articolo   Funzionamento API di stima scikit-learn
				
					covid_vacc_by_date = covid_df.groupby('date').sum()
covid_vacc_by_date
				
			

Rappresentando i dati della produzione dei vaccini nel tempo sul grafico otteniamo:

				
					fig = px.bar(covid_vacc_by_date, x = covid_vacc_by_date.index, y ='total_vaccinations', hover_data=['total_vaccinations'],color='total_vaccinations',height=400, title='Total Vaccinations by Date')

fig.show()
				
			

Mentre possiamo visualizzare anche il numero dei vaccinati progressivamente nel tempo :

				
					fig = px.bar(covid_vacc_by_date,x = covid_vacc_by_date.index, y = 'people_fully_vaccinated', hover_data=['people_fully_vaccinated'], color='people_fully_vaccinated',height=450,title='People Fully Vaccinated by Date')
fig.update_layout(title_x = 0.5)
fig.show()
				
			
COVID-19

Possiamo vedere che c’è un buon progresso generale nella somministrazione di vaccini in tutto il mondo da quando è iniziato nel dicembre 2020. Potrebbero esserci paesi con pochi progressi ma in generale stiamo migliorando e speriamo di portare a termine la missione di una completa vaccinazione mondiale.

Condividi il post

Condividi su facebook
Condividi su google
Condividi su twitter
Condividi su email
Condividi su whatsapp