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 4 kolommen:
Voor elke gemeente zijn er 5 rijen in het databestand overeenkomstig elk van de opleidingsniveaus in punt 3. De som van deze 5 aantallen is het totaal aantal inwoners van deze gemeente.
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 het bestand downloaden en bewaren in dezelfde map als je .py of .ipynb bestand.
Je kan het bestand hier downloaden: opleidingsniveau.csv2
inlezen
Schrijf een functie inlezen zonder argumenten.
De functie leest het bestand 'opleidingsniveau.csv' in en retourneert een geneste dictionary met drie niveaus.
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 geneste dictionary waarvan de sleutels de gemeenten zijn (string).
Voor elke gemeente is de waarde opnieuw een dictionary met 5 elementen. De sleutels zijn de strings "HIGH", "MIDDLE", "LOW", "NAP" en "UNK". De waarden zijn de overeenkomstige aantallen (type int).
>>> inlezen() {'Brussels Hoofdstedelijk Gewest': {'Anderlecht': {'NAP': 26644, 'LOW': 33866, 'MIDDLE': 18323, 'HIGH': 13066, 'UNK': 26342}, 'Oudergem': {'NAP': 5988, 'LOW': 5678, 'MIDDLE': 5569, 'HIGH': 9809, 'UNK': 6269}, 'Sint-Agatha-Berchem': {'NAP': 5224, 'LOW': 6644, 'MIDDLE': 4646, 'HIGH': 4552, 'UNK': 3635}, ... 'Philippeville': {'NAP': 1483, 'LOW': 3215, 'MIDDLE': 2610, 'HIGH': 1446, 'UNK': 485}, 'Walcourt': {'NAP': 2990, 'LOW': 5632, 'MIDDLE': 5088, 'HIGH': 3877, 'UNK': 766}, 'Viroinval': {'NAP': 853, 'LOW': 2176, 'MIDDLE': 1611, 'HIGH': 756, 'UNK': 359}}}
laagste_percentage
Schrijf een functie laagste_percentage met twee argumenten: provincie (string) en opleidingsniveau (string): "HIGH", "MIDDLE", "LOW", "NAP" of "UNK".
De functie gaat op zoek naar de gemeente in de opgegeven provincie waar het percentage inwoners met dit opleidingsniveau het laagst is.
De functie retourneert de naam van deze gemeente (string).
Als de provincie niet voorkomt in het databestand, dan komt er "provincie niet gevonden".
>>> laagste_percentage('Provincie Oost-Vlaanderen', 'LOW') 'Sint-Martens-Latem' >>> laagste_percentage('Oost-Vlaanderen', 'LOW') "provincie niet gevonden"