In deze oefening berekenen we het cumulatieve totaal aantal geregistreerde besmettingen van het corona-virus in een bepaalde provincie.

Gegevens

Je beschikt hiertoe over een databestand COVID19BE_CASES_AGESEX.csv gedownload via de website van Sciensano1.

Het bevat de gegevens per provincie met betrekking tot het aantal geregistreerde besmettingen tussen 1 maart 2020 en 31 augustus 2020. Hieronder zie je een schermafdruk van de eerste rijen.

csv schermafdruk
Visuele voorstelling van de eerste records
Hier zie je de eerste rijen in de dataset. De eerste rij bevat de namen van de velden, daarna volgen de data-rijen.

Voor deze oefening zijn we geïnteresseerd in de datum (kolom DATE), de provincie (kolom PROVINCE), het geslacht (kolom SEX) en het aantal nieuwe besmettingen op die dag, voor dat geslacht en leeftijdsgroep in die provincie (kolom CASES).

De gegevens staan in oplopende volgorde per datum.

Databestand

Het databestand is beschikbaar in het working directory van Dodona. Bij het openen in Python moet je specifiëren dat de encoding 'utf-8' is. Dat doe je op deze mandier: f = open("COVID19BE_CASES_AGESEX.csv", "r", encoding="utf-8"))

Programma debuggen

Je kan voor deze oefening de Python Tutor (na indienen op Dodona) niet gebruiken aangezien deze geen toegang heeft tot de bestanden. Als je de oefening wil debuggen, zal je deze lokaal moeten maken in PyCharm of in een Jupyter Notebook. Je moet dan de bestanden downloaden en bewaren in dezelfde map als je .py of .ipynb bestand.

Je kan het bestand hier downloaden: COVID19BE_CASES_AGESEX.csv2

Opgave

Schrijf een functie totaal die twee argumenten heeft:

De functie leest het databestand in en telt het totaal aantal besmettingen voorafgaand aan de opgegeven datum (inclusief) afzonderlijk per geslacht. De besmettingen over de verschillende leeftijdsgroepen worden samengeteld.

De functie retourneert een dictionary met twee sleutels: "mannen" (SEX = M) en "vrouwen" (SEX = F) en telkens het totaal aantal besmettingen vanaf het begin (1 maart) tot en met de opgegeven datum.

Als de opgeven datum niet in de range 1 maart tot 31 augustus 2020 valt of provincie niet voorkomt in de dataset, dan retourneert de functie de string "data niet beschikbaar".

Onderaan staan een aantal records waarbij de datum niet gekend is ("NA"). Deze worden niet meegeteld.

Voorbeeld

>>> totaal('2020-03-07', 'Limburg')
{'mannen': 20, 'vrouwen': 20}
>>> totaal('2020-03-07', 'limburg')
'data niet beschikbaar'