Gegeven een databestand recent-grads.csv met gegevens m.b.t. de tewerkstelling van recent afgestudeerden.
De tellingen zijn gegroepeerd per Major (afstudeerrichting). Elke datarij bestaat uit volgende velden (hieronder ook "kolommen" genoemd):
In het databestand bevat de eerste rij zijn de namen van de velden, daarna volgen 173 data-rijen. Hieronder zie je een schermafdruk van de eerste 6 rijen.
get_data
Schrijf een functie get_data waaraan als argument de bestandsnaam wordt doorgegeven (een string).
De functie retourneert een geneste lijst, waarvan elke sublijst overeenkomt met een rij in het databestand. De eerste sublijst bevat de veldnamen, de volgende sublijsten de data.
Zorg ervoor dat elke waarde ofwel een string is (Major en Major_category), ofwel een int (alle andere kolommen).
get_col
Schrijf een functie get_col met twee argumenten: i) de naam van een kolom (een string) en ii) een geneste lijst data die de vorm heeft zoals hierboven beschreven.
De functie retourneert een lijst met alle waarden van de kolom. De kolomnaam moet niet in de lijst voorkomen.
Als de kolomnaam foutief is, of niet voorkomt in de dataset, dan retourneert de functie een string: "field fieldname not found", waarbij fieldname vervangen wordt door de opgegeven string.
get_category
Schrijf een functie get_category met twee argumenten: i) de naam van een categorie (een string) en ii) een geneste lijst data die de vorm heeft zoals hierboven beschreven.
De functie retourneert een geneste lijst die dezelfde structuur heeft dan de oorspronkelijke dataset, maar enkel met de rijen waarbij de waarde in de kolom Major_category gelijk is aan de opgegeven categorienaam.
Het eerste element van de lijst bevat de veldnamen, net zoals in de oorspronkelijke dataset.
Als er geen enkele rij is met deze categorienaam, dan zit in de output enkel de lijst met de veldnamen.
get_percentage_women
Schrijf een functie get_percentage_women met twee argumenten: i) de naam van een categorie (een string) en ii) een geneste lijst data die de vorm heeft zoals hierboven beschreven.
De functie retourneert een reëel getal tussen 0 en 1 dat het percentage is van de vrouwen, samen genomen over alle afstudeerrichtingen binnen deze categorie, ten opzichte van het totaal aantal deelnemers binnen deze categorie (mannen + vrouwen).
Als er geen records zijn voor de opgegeven categorie, dan retourneert de functie de string "category category_name empty", waarbij category_name vervangen wordt door de opgegeven string.
Het databestand is beschikbaar in het working directory van Dodona.
Als je de oefening lokaal wilt maken (in PyCharm of in een Jupyter Notebook), dan moet je het databastand downloaden en bewaren in dezelfde map als je .py of .ipynb bestand.
Je kan het bestand hier downloaden: recent-grads.csv1
>>> get_data('recent-grads.csv') [['Major', 'Major_category', 'Men', 'Women', 'Employed', 'Full_time', 'Part_time', 'Unemployed', 'Median_Wage'], ['PETROLEUM ENGINEERING', 'Engineering', 2057, 282, 1976, 1849, 270, 37, 110000], ... ['COUNSELING PSYCHOLOGY', 'Psychology & Social Work', 931, 3695, 3777, 3154, 965, 214, 23400], ['LIBRARY SCIENCE', 'Education', 134, 964, 742, 593, 237, 87, 22000]] >>> data = get_data('recent-grads.csv') >>> get_col('Women', data) [282, 77, 131, 135, 11021, ..., 2332, 2270, 3695, 964] >>> get_col('women', data) 'field women not found' >>> get_category('Health', data) [['Major', 'Major_category', 'Men', 'Women', 'Employed', 'Full_time', 'Part_time', 'Unemployed', 'Median_Wage'], ['NURSING', 'Health', 21773, 187621, 180903, 151191, 40818, 8497, 48000], ['MEDICAL TECHNOLOGIES TECHNICIANS', 'Health', 2794, 2145, 13150, 11510, 2665, 505, 45000], ['MEDICAL ASSISTING SERVICES', 'Health', 500, 109, 9168, 5643, 4107, 407, 42000], ['PHARMACY PHARMACEUTICAL SCIENCES AND ADMINISTRATION', 'Health', 25463, 20957, 16620, 12537, 5346, 977, 40000], ['MISCELLANEOUS HEALTH MEDICAL PROFESSIONS', 'Health', 413, 973, 10076, 7514, 4145, 893, 36000], ['NUTRITION SCIENCES', 'Health', 4944, 8719, 13217, 9601, 6648, 975, 35000], ['HEALTH AND MEDICAL ADMINISTRATIVE SERVICES', 'Health', 2817, 9479, 15419, 13534, 3299, 1518, 35000], ... ['COMMUNICATION DISORDERS SCIENCES AND SERVICES', 'Health', 11376, 27468, 29763, 19975, 13862, 1487, 28000]] >>> get_percentage_women('Health', data) 0.7672971750078691 >>> get_percentage_women('Engineering', data) 0.22759232304147908 >>> get_percentage_women('Python', data) 'category Python empty'
Gebruik makend van de functies die je hier geprogrammeerd hebt, is het vrij eenvoudig om een grafiekje te maken van het percentage van vrouwen in elk studiegebied. Hieronder zie je een schermafdruk van een Jupyter Notebook waarin de functies get_data, get_col en get_percentage_women in voorgaande cellen gedefinieerd zijn.
Geïnteresseerde studenten kunnen deze code overnemen in een Jupyter notebook om te experimenteren. Meer info en tutorials over matplotlib vind je hier: https://matplotlib.org/tutorials/index.html2. (Dit maakt geen deel uit van de examenleerstof.)