Covid-19¶
En data de primers de maig de 2020, del web Dades_Obertes de la Generalitat
de Catalunya hem descarregat un fitxer amb dades sobre la covid-19 que
hem simplificat. El fitxer covid-19.csv és un exemple de
fitxer d’aquestes característiques. Usant les dades d’aquest fitxer
hem creat un DataFrame que farem servir
en els següents exercicis.
Familiaritzeu-vos amb la informació d’aquest fitxer i del DataFrame corresponent. A l’exemple que segueix podeu veure que hi ha 10 columnes i també es mostren dades de les primeres 5 files i de només 6 de les columnes:
>>> import pandas as pd >>> pd.options.display.max_columns = 7 >>> dfcovid = pd.read_csv('covid-19.csv') >>> dfcovid.columns Index(['ABS', 'ABS codi', 'Sector sanitari', 'Sector codi', 'Regio sanitaria', 'RS codi', 'data', 'sexe', 'casos', 'resultat covid'], dtype='object') >>> dfcovid[['ABS codi', 'Regio sanitaria', 'data', 'sexe', 'casos', 'resultat covid']][:5] ABS codi Regio sanitaria data sexe casos resultat covid 0 364 Camp de Tarragona 2020-03-24 Dona 1 Negatiu 1 53 Barcelona 2020-04-02 Home 3 Negatiu 2 222 Barcelona 2020-03-18 Dona 1 Positiu 3 15 Girona 2020-04-03 Home 3 Negatiu
Podem veure que hi ha agrupaments de 3 tipus, representats per les
columnes 'Regio sanitaria', 'Sector sanitari' i 'ABS'
(Àrea Bàsica de Salut), on hi ha els noms d’aquests agrupaments. A
part del nom, els agrupaments tenen un codi representat en les
columnes 'RS codi', 'Sector codi' i 'ABS codi',
respectivament. Una regió sanitària engloba diversos sectors
sanitaris i un sector sanitari engloba diverses ABS. El nom i el
codi que representa cadascuna de les regions sanitàries, sectors
sanitaris i ABS són únics i es compleix que cada nom va associat
sempre al mateix codi.
Al mòdul covid (fitxer covid.py) implementeu les
funcions següents:
Dissenya la funció
resultats()que rep 5 paràmetres: un DataFrame com el de l’exemple inicial i 4 strings: el nom d’una regió sanitària, dues dates, \(d1\) i \(d2\) (amb el format'aaaa-mm-dd', i tals que \(d1 \leq d2\)) i un resultat covid ('Positiu'o'Negatiu'). La funció retorna dos enters: el nombre de casos amb el resultat covid donat i el total de casos, tots dos referits a la regió sanitària donada i entre les dates donades (ambdues incloses). Exemple:>>> resultats(dfcovid, 'Barcelona', '2020-03-15', '2020-03-31', 'Positiu') (14208, 30894) >>> resultats(dfcovid, "Terres de l'Ebre", '2020-04-01', '2020-04-15', 'Positiu') (41, 536) >>> resultats(dfcovid, 'Catalunya Central', '2020-04-16', '2020-04-30', 'Negatiu') (303, 433)
Dissenya la funció
casos_agrupament()que a partir d’un DataFrame com el de l’exemple inicial, un string indicant un tipus d’agrupament ('Regio sanitaria','Sector sanitari'o'ABS') i un altre string amb un resultat ('Positiu'o'Negatiu'), retorni una Series on l’índex sigui el nom de cada agrupament del tipus donat i el valor el nombre de casos positius o negatius, segons correspongui, d’aquell agrupament. La Series retornada ha d’estar ordenada pel nombre de casos en ordre ascendent. Exemple:>>> s = casos_agrupament(dfcovid, 'Regio sanitaria', 'Positiu') >>> s Regio sanitaria Terres de l'Ebre 117 Alt Pirineu i Aran 246 Lleida 1167 Camp de Tarragona 1316 Girona 2574 Catalunya Central 2809 Barcelona 25233 Name: casos, dtype: int64
Dissenya la funció
arees_basiques()que, donat un DataFrame com el de l’exemple inicial, retorna una llista de tuples de la forma (nom ABS, codi ABS) amb totes les ABS (àrees bàsiques de salut) que consten en el DataFrame donat, sense repeticions i en ordre ascendent tenint en compte el nom de l’ABS. Exemple:>>> labs = arees_basiques(dfcovid) >>> len(labs) 372 >>> labs[:5] [('Abrera', 370), ('Agramunt', 1), ('Alcarràs', 2), ('Alfarràs/ Almenar', 3), ('Almacelles', 334)] >>> labs[152:157] [('Falset', 118), ('Figueres', 119), ('Flix', 120), ('Gavà 1', 122), ('Gavà 2', 123)]
Disposeu de jocs de proves al fitxer test-covid.txt.
Solució
Disposeu d’una solució al fitxer covid.py