In het kader van de voorbereiding van de volgende census in 2021, heeft Statbel, het Belgische statistiekbureau, de verschillende mogelijkheden bestudeerd om diverse administratieve databanken te gebruiken om informatie te verkrijgen over het onderwijs. In afwachting van de publicatie van de definitieve cijfers voor het referentiejaar 2021, werden de resultaten van het jaar 2017 voorgesteld op de website van Statbel. Deze zijn toegespitst op de bevolking van 25 jaar en ouder, aangezien vanaf die leeftijd de meerderheid van de bevolking de schoolopleiding heeft beëindigd.
Bron: https://statbel.fgov.be/nl/themas/datalab/datalab-census-onderwijs1
We werken in deze oefening met een vereenvoudigd bestand van de opleidingsgegevens per provincie en per gemeente in 2017. De cijfers zijn gebaseerd op een bestand van Statbel.
Hieronder zie je een schermafdruk van de eerste lijnen van het bestand.
Elke rij in het databestand bevat 6 kolommen:
Voor elke gemeente zijn er 5 rijen in het databestand overeenkomstig elk van de opleidingsniveaus in punt 5. De som van deze 5 aantallen is het totaal aantal inwoners van deze gemeente.
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 het bestand downloaden en bewaren in dezelfde map als je .py of .ipynb bestand.
Je kan het bestand hier downloaden: onderwijsniveau.csv2
inlezen_data
Schrijf een functie inlezen zonder argumenten
De functie leest het bestand 'onderwijsniveau.csv' in en retourneert een geneste dictionary met twee niveaus.
De hoofddictionary heeft als sleutels de provincie.
De sleutels in de hoofddictionary zijn de namen van de provincies zoals ze voorkomen in het bestand (string).
Voor elke provincie bestaat de waarde opnieuw uit een dictionary waarvan de sleutels de gemeentecodes zijn (kolom GEMEENTE_ID). Dit zijn gehele getallen (int).
Voor elke gemeente is de waarde in de dictionary een lijst met 5 tuples. Elke tuple heeft als eerste element het opleidingsniveau ("HIGH", "MIDDLE", "LOW", "NAP" of "UNK") en als tweede element het overeenkomstig aantal inwoners (type int).
Voor de gemeente Anderlecht (zie schermafdruk) is deze lijst van tuples dus [('NAP', 26644), ('LOW', 33866), ('MIDDLE', 18323), ('HIGH', 13066), ('UNK', 26342)]
.
>>> inlezen_data() {'Brussels Hoofdstedelijk Gewest': {21001: [('NAP', 26644), ('LOW', 33866), ('MIDDLE', 18323), ('HIGH', 13066), ('UNK', 26342)], 21002: [('NAP', 5988), ('LOW', 5678), ('MIDDLE', 5569), ('HIGH', 9809), ('UNK', 6269)], ... 93056: [('NAP', 1483), ('LOW', 3215), ('MIDDLE', 2610), ('HIGH', 1446), ('UNK', 485)], 93088: [('NAP', 2990), ('LOW', 5632), ('MIDDLE', 5088), ('HIGH', 3877), ('UNK', 766)], 93090: [('NAP', 853), ('LOW', 2176), ('MIDDLE', 1611), ('HIGH', 756), ('UNK', 359)]}}
gemeentenaam
Schrijf een functie gemeentenaam met drie argumenten: provincie (string) en gemeentenaam_nl (string) en gemeentenaam_fr (string)
De drie argumenten zijn waarden zoals die voorkomen in de dataset: de naam van een provincie, de naam van een gemeente in het Nederlands en in het Frans, maar je moet voor deze functie het databestand niet gebruiken.
De functie retourneert een string van de vorm: Gent/Gand in de provincie Oost-Vlaanderen, waarbij de schuingedrukt woorden correct moeten worden ingevuld met volgende methode:
Bekijk de voorbeelden goed om de opgave te snappen.
>>> gemeentenaam("Brussels Hoofdstedelijk Gewest", "Oudergem", "Auderghem") "Oudergem/Auderghem in het Brussels Hoofdstedelijk Gewest" >>> gemeentenaam("Provincie Oost-Vlaanderen", "Gent", "Gand") "Gent/Gand in de provincie Oost-Vlaanderen" >>> gemeentenaam("Provincie Vlaams-Brabant", "Asse", "Asse") "Asse in de provincie Vlaams-Brabant" >>> gemeentenaam("Provincie Oost-Vlaanderen", "Moerbeke (Gent)", "Moerbeke (Gand)") "Moerbeke in de provincie Oost-Vlaanderen"
gemiddeld_aantal_inwoners
Schrijf een functie gemiddeld_aantal_inwoners met één argument: provincie (string). Je mag ervan uitgaan dat deze provincie correct gespeld is zoals in het databestand.
De functie berekent het gemiddelde van het totaal aantal inwoners per gemeente in deze provincie. Dit is een geheel getal (afgerond volgens de standaardafronding van Python).
>>> gemiddeld_aantal_inwoners("Provincie Antwerpen") 26229