Project: KNMI
Inleiding
Je bent aangekomen bij het laatste hoofdstuk. In dit hoofdstuk ga je aan de slag met een project, waarin veel van wat je hebt geleerd in voorgaande hoofdstukken nodig is om het project tot een goed einde te brengen. In het project ga je aan de slag met gegevens van het KNMI (Koninklijk Nederlands Meteorologisch Instituut).
De data bevat maand- en jaarwaarden van het meetstation in De Bilt. Het doel is een aantal vragen te beantwoorden over deze gegevens. In verschillende deelopdrachten werk je naar een eindresultaat toe.
Leerdoelen
Aan het einde van dit hoofdstuk:
-
Kun je een project plannen
-
Kun je een project structureren
-
Kun je de juiste oplossing voor de problemen vinden
Het project: KNMI
Doel
Het doel van het project is een aantal vragen over de KNMI-gegevens te beantwoorden. Om die vragen te beantwoorden ga je een programma schrijven, zodat je niet alle antwoorden handmatig hoeft op te sporen in de data.
Plan
Download eerst de gegevens als txt
bestand. Inspecteer de data zodat je een gevoel bij de gegevens krijgt.
De data is te verkrijgen via de website van het KNMI.
Deze gegevens ga je gebruiken om de volgende vragen te beantwoorden:
Opdracht 1
Wat was voor de jaren 1901, 2000 en 2023 gemiddeld de warmste maand? Wat was de gemiddelde temperatuur van de betreffende maand? Geef voor elk jaar het resultaat als volgt op: "Maand, temperatuur". Bijvoorbeeld: "Mei, 13.3".
Opdracht 2
Maak twee groepen aan: de eerste groep bevat alle maanden die door de jaren heen ooit een hoogste gemiddelde temperatuur hadden. De tweede groep bevat alle maanden die door de jaren heen ooit een laagste temperatuur hadden.
Maak twee groepen aan. De eerste groep bevat alle maanden die ooit in een jaar de hoogste gemiddelde temperatuur hadden. Als juni in 1910 bijvoorbeeld de warmste maand was, dan komt juni in deze groep.
De tweede groep bevat alle maanden die ooit in een jaar de laagste gemiddelde temperatuur hadden. Als maart in 1960 de koudste maand was, dan komt maart in deze groep.
Zijn er maanden die in beide groepen voorkomen?
Opdracht 3
Verkrijg het jaar met de warmste maand en het jaar met de koudste maand.
Opdracht 4
Maak een lijst met de vijf hoogste jaargemiddelden en een lijst met de vijf laagste jaargemiddelden. Maak vervolgens een lijst met alle jaren die één van die 10 temperaturen heeft.
Uit hoeveel jaren bestaat de lijst?
Data opschonen
Om te werken met de data moet het nog worden opgeschoond. Open de url, kopieer alle tekst en plak dit in een bestandje data.txt
. Plaats dit bestandje in je projectmap, bijvoorbeeld knmi
.
Het doel is de data op te schonen en om te zetten naar een CSV-bestand. CSV staat voor Comma-separated values en is een tekstbestand dat komma’s (of andere tekens) gebruikt om waarden te scheiden. Met een CSV-bestand kun je tabelgegevens opslaan en lezen. Neem bijvoorbeeld onderstaande tabel:
Kolom A |
Kolom B |
Kolom C |
1 |
A |
3 |
10 |
X |
5 |
In CSV-formaat zou dit er zo uit zien:
Kolom A,Kolom B,KolomC
1,A,3
10,X,5
De eerste regel bestaat uit de (optionele) koppen van de kolommen.Daarna bevat elke regel de rij met waarden, gescheiden door een komma.Na elke komma begint dus een nieuwe kolom.Een CSV-bestand sla je op als voorbeeld.csv
.
De opdrachten
Met de opgeschoonde data kun je nu de code gaan schrijven om de opdrachten op te lossen.Werk de opdrachten één voor één af.Merk je dat je code herhaalt: plaats het dan in een aparte functie, zodat je het eenvoudig kunt hergebruiken.Schrijf tijdens het schrijven van de code ook tests, om na te gaan of je de gewenste resultaten verkrijgt.
Verder enkele tips:
-
Gebruik de module
csv
uit de standaard bibliotheek om het CSV-bestand in te lezen. -
Schrijf als eerst de functie om de data in te lezen
-
Schrijf veelvuldig commentaren bij je code.Laat je het even liggen om later verder te werken, dan kun je teruglezen wat je aan het doen was.
-
Maak voor de testen nep-gegevens aan die lijken op de echte data, maar dan veel beperkter.Zo kun je eenvoudig nagaan of je functies het gewenste resultaat opleveren.
-
Probeer te itereren.Schrijf een eerste versie die je testen doen slagen.Probeer daarna je code eenvoudiger of duidelijker te maken.
-
Kom je er niet uit, gebruik dan
print
-statements om te kijken wat er gebeurt in je code. -
Alles is op te lossen met alles wat je geleerd hebt in deze opleiding. Er zijn geen externe tools of andere packages uit de standaard bibliotheek nodig, behalve
csv
.
Opdracht 1
Wat was voor de jaren 1901, 2000 en 2023 gemiddeld de warmste maand? Wat was de gemiddelde temperatuur van de betreffende maand? Geef voor elk jaar het resultaat als volgt op: "Maand, temperatuur". Bijvoorbeeld: "Mei, 13.3".
Opdracht 2
Maak twee groepen aan: de eerste groep bevat alle maanden die door de jaren heen ooit een hoogste gemiddelde temperatuur hadden. De tweede groep bevat alle maanden die door de jaren heen ooit een laagste temperatuur hadden.
Maak twee groepen aan. De eerste groep bevat alle maanden die ooit in een jaar de hoogste gemiddelde temperatuur hadden. Als juni in 1910 bijvoorbeeld de warmste maand was, dan komt juni in deze groep.
De tweede groep bevat alle maanden die ooit in een jaar de laagste gemiddelde temperatuur hadden. Als maart in 1960 de koudste maand was, dan komt maart in deze groep.
Zijn er maanden die in beide groepen voorkomen?
Opdracht 3
Verkrijg het jaar met de warmste maand en het jaar met de koudste maand.
Opdracht 4
Maak een lijst met de vijf hoogste jaargemiddelden en een lijst met de vijf laagste jaargemiddelden. Maak vervolgens een lijst met alle jaren die één van die 10 temperaturen heeft.
Uit hoeveel jaren bestaat de lijst?