Covid-19
========
.. py:module:: covid
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 :download:`covid-19.csv` és un exemple de
fitxer d'aquestes característiques. Usant les dades d'aquest fitxer
hem creat un :py:ref:`DataFrame ` que farem servir
en els següents exercicis.
Familiaritzeu-vos amb la informació d'aquest fitxer i del
:py:ref:`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:
.. literalinclude:: test-covid.txt
:language: python
:lines: 4-16
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 :py:mod:`covid` (fitxer :file:`covid.py`) implementeu les
funcions següents:
#. Dissenya la funció :py:func:`resultats` que rep 5 paràmetres: un
:py:ref:`DataFrame ` com el de l'exemple inicial i 4
strings: el nom d'una regió sanitària, dues dates, :math:`d1` i
:math:`d2` (amb el format ``'aaaa-mm-dd'``, i tals que :math:`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:
.. literalinclude:: test-covid.txt
:language: python
:lines: 24-29
#. Dissenya la funció :py:func:`casos_agrupament` que a partir d'un
:py:ref:`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 :py:ref:`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 :py:ref:`Series
` retornada ha d'estar ordenada pel nombre de casos en
ordre ascendent. Exemple:
.. literalinclude:: test-covid.txt
:language: python
:lines: 36-47
#. Dissenya la funció :py:func:`arees_basiques` que, donat un
:py:ref:`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 :py:ref:`DataFrame
` donat, sense repeticions i en ordre
ascendent tenint en compte el nom de l'ABS. Exemple:
.. literalinclude:: test-covid.txt
:language: python
:lines: 74-80
Disposeu de jocs de proves al fitxer :download:`test-covid.txt`.
.. rubric:: Solució
Disposeu d'una solució al fitxer :download:`covid.py`