Jaarlijks organiseert de Algemene Directie Statistiek van de FOD Economie een enquête naar de arbeidskrachten (EAK).
In deze oefening werken we met gegevensbestanden afkomstig uit de EAK. Per jaar (2017, 2018 en 2019) bevat dit bestand de top 100 van de meest voorkomende beroepen.
Hieronder zie je een schermafdruk van de eerste lijnen van het bestand van 2017 (bestandsnaam 2017.csv
).
Elke rij in het databestand bevat 3 kolommen:
Notatie getallen: alle getallen zijn gehele getallen. Het scheidingsteken voor de duizendtallen is de komma. Als een gegeven ontbreekt, dan staat er "NoResp". Dit betekent dat geen enkele respondent dit beroep uitoefende. Je mag dit gelijkstellen aan het getal 0.
Encoding
De bestanden zijn in csv-formaat bewaard vanuit MS-Excel. Bij het openen in Python moet je specifiëren dat de encoding 'utf-8-sig' is.
f = open('2017.csv', 'r', encoding='utf-8-sig')
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 de bestanden hier downloaden:
inlezen
Schrijf een functie inlezen met één argument: een jaartal (int).
De functie leest het bestand 'jaartal.csv' in en retourneert een geneste dictionary.
De sleutels in de hoofddictionary zijn de beroepen.
Voor elk beroep bestaat de waarde opnieuw uit een dictionary waarvan de sleutels "mannen" en "vrouwen" zijn en de waarden het overeenkomstige getal uit het bestand (int).
>>> inlezen(2017) {'Administratief medewerkers, algemeen': {'vrouwen': 125411, 'mannen': 51503}, 'Verkopers en verkoopsassistenten': {'vrouwen': 88315, 'mannen': 42437}, 'Schoonmakers in hotels, kantoren en dergelijke accomodatie': {'vrouwen': 104619, 'mannen': 21406}, 'Huishoudelijke hulpen en schoonmakers in particuliere huishoudens': {'vrouwen': 106217, 'mannen': 2761}, 'Leraren in algemene vakken in het secundair onderwijs': {'vrouwen': 70141, 'mannen': 34375}, 'Verpleegkundig kaderpersoneel': {'vrouwen': 69078, 'mannen': 14075}, 'Onderwijzers in het lager onderwijs': {'vrouwen': 60924, 'mannen': 9411}, 'Verzorgenden in ziekenhuizen, verpleeginstellingen en dergelijke instellingen': {'vrouwen': 62940, 'mannen': 4907}, 'Magazijniers': {'vrouwen': 9203, 'mannen': 52995}, 'Vrachtwagenchauffeurs': {'vrouwen': 406, 'mannen': 60027}, 'Accountants en boekhoudkundig kaderpersoneel': {'vrouwen': 27615, 'mannen': 30134}, 'Laders en lossers': {'vrouwen': 11339, 'mannen': 45174}, 'Managers op het gebied van verkoop en marketing': {'vrouwen': 14933, 'mannen': 37770}, 'Verpleegkundigen': {'vrouwen': 47053, 'mannen': 5266}, 'Directeurs van ondernemingen': {'vrouwen': 12609, 'mannen': 38992}, 'Verzorgend personeel in kinderdagverblijven, crèches en dergelijke en onthaalmoeders': {'vrouwen': 44040, 'mannen': 2287}, 'Ondersteunend personeel op het gebied van maatschappelijk werk': {'vrouwen': 32285, 'mannen': 12513}, 'Maatschappelijk werkers': {'vrouwen': 33084, 'mannen': 10007}, 'Systeemanalisten': {'vrouwen': 5902, 'mannen': 36331}, 'Administratief personeel, niet elders geclassificeerd': {'vrouwen': 27499, 'mannen': 14356}, 'Administratief personeel: statistiek, financiën en verzekeringen': {'vrouwen': 27033, 'mannen': 14127}, 'Onderwijzers in het kleuteronderwijs': {'vrouwen': 37800, 'mannen': 1226}, 'Bureausecretaressen en directieassistenten': {'vrouwen': 34213, 'mannen': 4437}, 'Timmerlui en schrijnwerkers': {'vrouwen': 687, 'mannen': 37791}, 'Softwareontwerpers': {'vrouwen': 3050, 'mannen': 34717}, 'Secretariaatsmedewerkers, algemeen': {'vrouwen': 34778, 'mannen': 2343}, 'Elektriciens (in gebouwen en dergelijke)': {'vrouwen': 322, 'mannen': 36476}, 'Toezichthoudend personeel in de bouwnijverheid': {'vrouwen': 1517, 'mannen': 34585}, 'Boekhouders': {'vrouwen': 23315, 'mannen': 12585}, 'Kassiers en ticketverkopers': {'vrouwen': 26381, 'mannen': 9251}, 'Kelners': {'vrouwen': 21029, 'mannen': 13841}, 'Verzorgenden thuiszorg': {'vrouwen': 33768, 'mannen': 986}, 'Winkeliers': {'vrouwen': 16819, 'mannen': 17902}, 'Leraren in beroepsgerichte vakken in het secundair onderwijs': {'vrouwen': 15574, 'mannen': 18903}, 'Handelsvertegenwoordigers': {'vrouwen': 8460, 'mannen': 25133}, 'Polyvalente bouwvakkers (inclusief bouwaannemers die meewerken op de werf)': {'vrouwen': 705, 'mannen': 32735}, "Chauffeurs van auto's, taxi's en bestelwagens": {'vrouwen': 4287, 'mannen': 26891}, 'Loodgieters': {'vrouwen': 524, 'mannen': 30512}, 'Bureauchefs': {'vrouwen': 13791, 'mannen': 16932}, 'Administratief personeel: boekhouding': {'vrouwen': 19570, 'mannen': 10415}, 'Koks': {'vrouwen': 11120, 'mannen': 18826}, 'Monteurs en reparateurs van motorvoertuigen': {'vrouwen': 1012, 'mannen': 28320}, 'Keukenhulpen': {'vrouwen': 19980, 'mannen': 9085}, 'Receptionisten, algemeen': {'vrouwen': 21469, 'mannen': 6589}, 'Monteurs en reparateurs van industriële en landbouwmachines': {'vrouwen': 331, 'mannen': 27673}, 'Metselaars en dergelijke': {'vrouwen': 60, 'mannen': 27816}, 'Restaurantmanagers': {'vrouwen': 11413, 'mannen': 16401}, 'Logistiek medewerkers: vervoer': {'vrouwen': 9693, 'mannen': 16962}, 'Toezichthoudend personeel in de industrie': {'vrouwen': 2882, 'mannen': 23534}, 'Professoren en andere docenten in het hoger onderwijs': {'vrouwen': 12547, 'mannen': 13631}, 'Managers op het gebied van human resources': {'vrouwen': 13582, 'mannen': 12148}, 'Politie-inspecteurs en speurders': {'vrouwen': 4807, 'mannen': 20465}, 'Kinesisten en fysiotherapeuten': {'vrouwen': 16238, 'mannen': 8496}, 'Bedieners van machines voor de vervaardiging van voedings- en genotmiddelen': {'vrouwen': 6882, 'mannen': 17329}, 'Veiligheidspersoneel': {'vrouwen': 2328, 'mannen': 21735}, 'Leraren in het buitengewoon onderwijs': {'vrouwen': 18264, 'mannen': 5399}, 'Verzekeringsagenten': {'vrouwen': 12392, 'mannen': 11052}, 'Beleidsadviseurs': {'vrouwen': 11530, 'mannen': 11864}, 'Bedrijfs- en organisatieanalisten': {'vrouwen': 6237, 'mannen': 17047}, 'Lassers en snijders': {'vrouwen': 892, 'mannen': 21992}, 'Managers op het gebied van logistiek en aanverwante diensten': {'vrouwen': 3355, 'mannen': 19247}, 'Specialisten op het gebied van de gespecialiseerde geneeskunde': {'vrouwen': 10716, 'mannen': 11812}, 'Juristen, niet elders geclassificeerd': {'vrouwen': 12948, 'mannen': 9455}, 'Tuiniers en kwekers van bomen, struiken, bloemen, zaden, kasgroenten en dergelijke': {'vrouwen': 1625, 'mannen': 20433}, 'Buschauffeurs en trambestuurders': {'vrouwen': 2844, 'mannen': 19108}, 'Manusjes-van-alles': {'vrouwen': 2448, 'mannen': 19049}, 'Kappers': {'vrouwen': 17005, 'mannen': 3851}, 'Bouwkundig architecten': {'vrouwen': 7322, 'mannen': 13191}, 'Managers in de detail- en groothandel': {'vrouwen': 7102, 'mannen': 12870}, 'Heftruckbestuurders': {'vrouwen': 1013, 'mannen': 18930}, 'Installateurs van elektrische apparatuur': {'vrouwen': 87, 'mannen': 19478}, 'Slagers, vishandelaren en dergelijke': {'vrouwen': 2238, 'mannen': 16243}, 'Bedieners van verpakkings-, bottel- en etiketteermachines': {'vrouwen': 11083, 'mannen': 7360}, 'Burgerlijk ingenieurs': {'vrouwen': 1994, 'mannen': 15455}, 'Financieel en beleggingsadviseurs': {'vrouwen': 6365, 'mannen': 10970}, 'Huisartsen': {'vrouwen': 9504, 'mannen': 7732}, 'Apothekers': {'vrouwen': 11445, 'mannen': 5312}, 'Managers op het gebied van informatie- en communicatietechnologie (ICT)': {'vrouwen': 2769, 'mannen': 13703}, 'Managers in de bouwnijverheid': {'vrouwen': 945, 'mannen': 15507}, 'Advocaten': {'vrouwen': 7003, 'mannen': 9328}, 'Grafisch en multimedia designers': {'vrouwen': 7053, 'mannen': 9201}, 'Psychologen': {'vrouwen': 14189, 'mannen': 1948}, 'Arbeidsbemiddelaars en uitzendbureaumedewerkers': {'vrouwen': 11252, 'mannen': 4885}, 'Medisch secretaressen': {'vrouwen': 15129, 'mannen': 671}, 'Industrieel ingenieurs en productie-ingenieurs': {'vrouwen': 1787, 'mannen': 13423}, 'Assembleurs van mechanische onderdelen van motoren, turbines, motorvoertuigen en vliegtuigen': {'vrouwen': 1991, 'mannen': 12932}, 'Specialisten op het gebied van personeels- en loopbaanontwikkeling': {'vrouwen': 9866, 'mannen': 4819}, 'Postboden en postsorteerders': {'vrouwen': 3899, 'mannen': 10737}, 'Verkoopspecialisten in medische, farmaceutische en technische producten (met uitzondering van ICT)': {'vrouwen': 3758, 'mannen': 10497}, 'Medewerkers personeelsadministratie': {'vrouwen': 10361, 'mannen': 3867}, 'Dakdekkers': {'vrouwen': 284, 'mannen': 13913}, 'Specialisten op het gebied van reclame en marketing': {'vrouwen': 6277, 'mannen': 7750}, 'Technici op het gebied van mechanica': {'vrouwen': 367, 'mannen': 13626}, 'Managers op het gebied van onderwijs': {'vrouwen': 8564, 'mannen': 4914}, 'Politie-agenten': {'vrouwen': 3621, 'mannen': 9809}, 'Instellers en bedieners van metaalbewerkingsmachines en -gereedschapswerktuigen': {'vrouwen': 337, 'mannen': 13082}, 'Vakkenvullers': {'vrouwen': 6636, 'mannen': 6627}, 'Toezichthoudend personeel in winkels': {'vrouwen': 8991, 'mannen': 4252}, 'Managers op het gebied van reclame en public relations': {'vrouwen': 7557, 'mannen': 5563}, 'Makelaars en beheerders van onroerend goed': {'vrouwen': 4440, 'mannen': 8662}}
aandeel_geslacht
Schrijf een functie aandeel_geslacht met drie argumenten: een geslacht (str), een beroep (str) en een jaartal (int).
De functie berekent het procentueel aandeel van personen van dat geslacht ("mannen" of "vrouwen") die dit beroep in dat jaartal hebben uitgeoefend.
De functie retourneert een getal (float) tussen 0 en 100. Dit getal wordt niet afgerond.
Als het beroep niet voorkomt in de lijst van dat jaar (hoofdlettergevoelig), of als we geen gegevens hebben over dat jaar, krijg je de string "gegevens ontbreken". We beschikken enkel over een databestand van 2017, 2018 en 2019.
>>> aandeel_geslacht('mannen', 'Administratief medewerkers, algemeen', 2017) 29.1118848706151 >>> aandeel_geslacht('vrouwen', 'Vrachtwagenchauffeurs', 2017) 0.6718183773765989 >>> aandeel_geslacht('vrouwen', 'Vrachtwagenchauffeurs', 1912) "gegevens ontbreken"