Vacunació 2021¶
En data de primers de maig de 2021, del web Dades_Obertes de la Generalitat de
Catalunya hem descarregat un fitxer amb dades sobre la vacunació per
al covid-19 que hem simplificat. El fitxer vacunacio.csv
és un exemple de fitxer d’aquestes característiques. Usant les dades
d’aquest fitxer hem creat un DataFrame de
vacunació que farem servir en els següents exercicis.
Familiaritzeu-vos amb la informació del fitxer
vacunacio.csv i del DataFrame
de vacunació corresponent. A l’exemple que segueix podeu veure que hi
ha 9 columnes i també es mostren dades d’algunes files i de totes les
columnes excepte la de la província:
>>> import pandas as pd >>> dfvacuna = pd.read_csv('vacunacio.csv') >>> dfvacuna.columns Index(['SEXE', 'PROVINCIA', 'COMARCA', 'EDAT', 'DOSI', 'DATA', 'MARCA', 'VACC', 'COMP'], dtype='object') >>> dfvacuna[['SEXE', 'COMARCA', 'EDAT', 'DOSI', 'DATA', 'MARCA', 'VACC', 'COMP']][82:90] SEXE COMARCA EDAT DOSI DATA MARCA VACC COMP 82 Home BARCELONES 35 a 39 2 2021/04/22 Moderna Si 17 83 Dona VALLES ORIENTAL 30 a 34 1 2021/04/22 Moderna Si 4 84 Dona OSONA 65 a 69 1 2021/04/22 AstraZeneca Si 167 85 Home TARRAGONES 40 a 44 1 2021/04/23 Moderna Si 3 86 Dona VALLES OCCIDENTAL 55 a 59 1 2021/04/22 Moderna Si 38 87 Dona BAIX LLOBREGAT 75 a 79 2 2021/04/23 Moderna Si 5 88 Home VALLES OCCIDENTAL 50 a 54 1 2021/04/20 Moderna Si 7 89 Home BAIX LLOBREGAT 60 a 64 1 2021/04/22 Moderna Si 7
A cada fila hi ha informació del que en direm una sessió de
vacunació: hi ha informació de la zona: província i comarca; de les
persones cridades a vacunar-se: sexe i edat; i de la vacuna: data de
vacunació, marca de la vacuna i dosi (primera o segona). A més, hi ha
la columna 'VACC' que indica si les persones s’han vacunat o no i
la columna 'COMP' que indica el nombre de persones amb les
característiques de la fila.
Al mòdul vacunacio (fitxer vacunacio.py) implementeu les
funcions següents:
- vacunacio.vacunes(df, nom_prov)¶
Retorna dos enters, el nombre de persones cridades a vacunar-se que s’han vacunat i el nombre de les que no s’han vacunat, a partir del DataFrame de vacunació df i per la província nom_prov (string). Exemples:
>>> from vacunacio import vacunes >>> vacunes(dfvacuna[:100], 'Barcelona') (822, 2) >>> vacunes(dfvacuna[:100], 'Girona') (461, 10)
- vacunacio.max_vacunes(df, d1, d2)¶
Donat un DataFrame de vacunació, df, i dos strings representant dues dates, \(d1\) i \(d2\) (amb el format
'aaaa/mm/dd', i tals que \(d1 \leq d2\)), retorna una tupla amb els valors de les columnes'COMARCA', 'EDAT', 'DATA', 'MARCA'i'COMP'corresponents a la sessió de vacunació (és a dir la fila de df) de la data entre les dates \(d1\) i \(d2\) (ambdúes incloses) en què s’han posat més vacunes.Exemples:
>>> from vacunacio import max_vacunes >>> max_vacunes(dfvacuna[:100], '2021/04/01', '2021/04/30') ('OSONA', '65 a 69', '2021/04/22', 'AstraZeneca', 167) >>> max_vacunes(dfvacuna[1000:4000], '2021/02/01', '2021/02/28') ('BARCELONES', '55 a 59', '2021/02/04', 'Pfizer', 328)
- vacunacio.valors_possibles(df, nom_columna)¶
Retorna una llista amb tots els valors possibles que hi ha a la columna nom_columna del DataFrame de vacunació df, ordenats lexicogràficament.
Exemples:
>>> from vacunacio import valors_possibles >>> valors_possibles(dfvacuna[:100], 'MARCA') ['AstraZeneca', 'Moderna', 'No admin', 'Pfizer'] >>> valors_possibles(dfvacuna[:2000], 'EDAT') ['0 a 14', '15 a 19', '20 a 24', '25 a 29', '30 a 34', '35 a 39', '40 a 44', '45 a 49', '50 a 54', '55 a 59', '60 a 64', '65 a 69', '70 a 74', '75 a 79', '80 o més', 'No classificat']
- vacunacio.df_edats(df)¶
Retorna un DataFrame on l’índex són totes les possibles franges d’edats que hi ha al DataFrame de vacunació df, les columnes són totes les possibles marques de vacunes que apareixen a df i els elements són enters corresponents al nombre de dosis de vacuna donada per cada franja d’edat i marca. Les franjes d’edat i marques en el DataFrame retornat han d’estar en ordre lexicogràfic.
Exemples:
>>> from vacunacio import df_edats >>> df = dfvacuna[:100] >>> df_edats(df) AstraZeneca Moderna No admin Pfizer 15 a 19 0 0 0 2 20 a 24 0 2 0 2 25 a 29 0 8 0 5 30 a 34 0 16 0 1 35 a 39 0 23 0 0 40 a 44 0 34 2 1 45 a 49 0 3 0 0 50 a 54 0 89 0 6 55 a 59 21 39 0 6 60 a 64 583 54 0 0 65 a 69 367 19 8 1 70 a 74 0 8 0 293 75 a 79 0 13 1 126 80 o més 0 1 11 27
Disposeu dels jocs de proves als fitxers
test-vacunacio.txt i
tests.txt.
Solució
Disposeu d’una solució al fitxer vacunacio.py.