2.6. Oefenopgaven#

2.6.1. Pandas#

Opdracht: Een inventaris van veren

Een fabrikant heeft verschillende veren in voorraad, elk met een eigen veerconstante, maximale uitrekking en prijs:

Serienummer

Veerconstante (N/mm)

Max. Uitrekking (mm)

Prijs (euro)

T1590

0.29

251.00

3.30

T1350

25.40

4.88

2.88

T1620

12.80

14.70

5.37

T940

0.41

61.9

2.66

Voer voor deze gegevens de volgende opdrachten uit:

  • Zet deze veren in een pandas DataFrame

  • Gebruik het dataframe om een staafgrafiek te maken met de serienummers op de x-as en de prijs op de y-as

  • Gebruik het dataframe om een spreidingsdiagram (scatterplot) te maken met de prijs op de x-as en de veerconstante op de y-as

2.6.2. Data Filteren#

Opdracht: De inventaris filteren

We werken verder met het DataFrame met gegevens van veren dat we hiervoor aangemaakt hebben.

Voer hiermee de volgende opdrachten uit:

  • maak een overzicht van alle veren met een prijs onder de 3 euro

  • maak een overzicht van alle veren met een veerconstante hoger dan 1 N/mm

2.6.3. Kolommen#

Opdracht: Veerenergie

Opnieuw werken we verder met het DataFrame met gegevens van veren dat we hiervoor aangemaakt hebben.

Nu zijn wij benieuwd hoeveel veerenergie er maximaal in elk van deze veren opgeslagen kan worden. Dit kan berekend worden vanuit de veergegevens als volgt:

\[ E_\text{veer} = \frac{1}{2} C \cdot {u_\text{max}}^2, \]

waar \(C\) de veerconstante in Newton per meter is en \(u_\text{max}\) de maximale uitrekking in meter.

Voer hiermee de volgende opdrachten uit:

  • maak een nieuwe kolom aan genaamd Veerenergie (J). De waarden in deze kolom zouden gelijk moeten zijn aan de maximale veerenergie, berekend volgens de bovenstaande formule

  • geef dit resultaat weer in een grafiek met op de x-as de prijs per veer en op de y-as de maximale veerenergie

2.6.4. Data inlezen#

Opdracht: Man/Vrouw verhouding in Studentensteden

Uit de bevolkingsgegevens die we als voorbeeld gebruiken kunnen we ook halen hoeveel mannen en vrouwen er in elk van de studentensteden wonen.

Laad de bevolkingsgegevens in en voer de volgende opdrachten uit:

  • Voeg naar eigen inzicht studentensteden toe aan de lijst in het voorbeeld,

  • Maak een nieuwe kolom aan met daarin de verhouding vrouw/man,

  • Maak een staafgrafiek met daarin per stad de vrouw/man verhouding.

2.6.5. Data filteren en plotten#

Download het onderstaande bestand, en sla het op in de data-submap van de map waar je in aan het werk bent.

(Download)

Opdracht: Filter de pieken eruit

Schrijf een functie om de pieken (die waarschijnlijk uit een meetfout volgen) uit de data weg te filteren. Hiervoor kan je met een for-loop door de gegevens heen lopen en het gemiddelde van de buren nemen als je een piek detecteert.

Opdracht: Fit de data

Pas de waarden in y_schatting aan zodat de schatting goed overeen komt met de ingelezen data. Waarschijnlijk moet je dit een paar keer proberen voordat de gegevens helemaal overeen komen.

2.6.6. Afsluitende Opdracht#

Je kan je antwoorden op deze vragen controleren in Vocareum. Kijk hiervoor op Brightspace.

Opdracht: Fietsen tegen de wind in 1

Freek wil graag wat vaker vanaf zijn huis in Voorschoten naar Delft fietsen. Hij heeft alleen het idee dat hij altijd tegenwind heeft wanneer hij dat doet. In deze opdracht gaan we uitzoeken of dat echt zo is.

Download hiervoor de uurgegevens van het weer in Voorschoten. Deze vind je op de website van het KNMI. De gegevens die je daar download zitten ingepak in een .zip bestand. Pak deze uit in een mapje genaamd data.

We beginnen met het inlezen van deze gegevens. Gebruik hiervoor pandas.read_csv en geef het resulterende DataFrame de naam data.

  • Je zal merken dat het bovenste deel van het bestand veel toelichting bevat. Dit deel kan je overslaan met het argument skiprows. Kies hiervoor zelf een geschikte waarde.

  • Wat ook opvalt aan het bestand is dat er veel spaties gebruikt worden om de tabel er netjes uit te laten zien. Bij het inladen kan je het argument skipinitialspace gebruiken om deze te verwijderen.

Laten we eerst naar één dag kijken: 23 november 2022. Haal deze gegevens op uit de tabel en sla dit op als nov23.

Bepaal voor deze dag de gemiddelde windrichting in graden en de gemiddelde windsnelheid in meter per seconde. Sla deze respectievelijk op als gem_windrichting en gem_windsnelheid.

  • In het bovenste deel van het bestand staat beschreven wat de (enigszins kriptische) kolomtitels betekenen en welke eenheden ze daarvoor gebruiken.

Opdracht: Fietsen tegen de wind in 2

In dit tweede deel gaan we kijken of Freek gelijk heeft. Vanaf voorschoten fiets hij het grootste deel van de weg in een kompasrichting van 234 graden \((\theta_F)\). Als de wind een snelheid \(v_w\) heeft en onder een kompasrichting van \(\theta_w\) staat kunnen we als volgt de wind die Freek voelt berekenen:

\(v_\text{gevoel} = v_w\cdot \cos\left(\theta_w - \theta_F\right) \).

Wanneer deze gevoelde wind positief is heeft Freek wind mee, wanneer deze negatief is heeft Freek wind tegen.

Schrijf een script wat op basis van de ingeladen data een grafiek maakt van de gevoelde wind. Voer hiervoor de volgende stappen uit:

  1. Maak een functie v_gevoel, met als input de windsnelheid in 0.1 m/s en de windrichting in graden (in die volgorde). Deze berekent de gevoelssnelheid volgens de bovenstaande formule in meter per seconde

  2. Voeg een kolom met als naam V_GEVOEL toe aan het dataframe data, met daarin de gevoelde snelheid op elk moment

  3. Maak een grafiek met daarin de gevoelde snelheid per uur op 23 november 2022. Zet op de x-as het uur van de dag en op de y-as de gevoelde windsnelheid. Noem de figuur fig en het assenstelsel ax. Vergeet ook de aslabels niet