<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Parkeren in Utrecht
Via een WOB-verzoek van Marc Fonteijn is de data van alle parkeermeters in Utrecht openbaar gemaakt. Dit is een poging van mij om de data te analyseren en om te kijken of we er iets van kunnen leren! 
Step1:  Vervolgens kijken we of we het correct is ingeladen
Step2:  Starttijden
Op welke tijden van de dag starten mensen met betaald parkeren? Met een distributie kan je dat onderzoeken
Step3:  Eindtijden
Hetzelfde geld voor eindtijden...
Step4:  Duur
Hoe lang parkeren mensen dan eigen? Wat kunnen we daar van leren?
Step5:  Interessant! Van de distributie kan je al een hoop leren, zo zie je dat iedereen bijna altijd tegen een uur aan parkeert... Dat zijn de pieken die er bovenuit steken... En de bult op ongeveer 850 minuten, dat is dus vaak een gedurende de nacht... en de volgende ochtend weer vertrekken..
Analyse van de kosten
Ook de kosten van het parkeren zitten in het CSV bestand, eens kijken wat we daar van kunnen leren... Hoeveel betalen mensen ongeveer, en hoe is de distributie hier van?
<ASSISTANT_TASK:>
Python Code:
df = pd.read_csv('totaal.csv')
df = df.set_index('id')
df['start'] = pd.to_datetime(df['start']) # Starttijden converteren naar datetimes
df['einde'] = pd.to_datetime(df['einde']) # Eindtijden converteren naar datetimes
df['duur'] = df['einde'] - df['start'] # Hoe lang parkeert iedereen?
Explanation: Parkeren in Utrecht
Via een WOB-verzoek van Marc Fonteijn is de data van alle parkeermeters in Utrecht openbaar gemaakt. Dit is een poging van mij om de data te analyseren en om te kijken of we er iets van kunnen leren! :)
We starten met het laden van alle data:
End of explanation
df.head()
Explanation: Vervolgens kijken we of we het correct is ingeladen:
End of explanation
start = df['start']
hours = start.map(lambda x: x.hour)
hours.hist()
Explanation: Starttijden
Op welke tijden van de dag starten mensen met betaald parkeren? Met een distributie kan je dat onderzoeken:
End of explanation
einde = df['einde']
hours = einde.map(lambda x: x.hour)
hours.hist()
Explanation: Eindtijden
Hetzelfde geld voor eindtijden...
End of explanation
duur = df['duur']
hours = duur.map(lambda x: x / np.timedelta64(1, 'm'))
hours = hours[hours > 0] # Filter negatives
hours = hours[hours < 1440] # Filter longer then a day.
hours.hist(bins=100)
Explanation: Duur
Hoe lang parkeren mensen dan eigen? Wat kunnen we daar van leren?
End of explanation
kosten = df['kosten']
kosten.hist(bins=50)
Explanation: Interessant! Van de distributie kan je al een hoop leren, zo zie je dat iedereen bijna altijd tegen een uur aan parkeert... Dat zijn de pieken die er bovenuit steken... En de bult op ongeveer 850 minuten, dat is dus vaak een gedurende de nacht... en de volgende ochtend weer vertrekken..
Analyse van de kosten
Ook de kosten van het parkeren zitten in het CSV bestand, eens kijken wat we daar van kunnen leren... Hoeveel betalen mensen ongeveer, en hoe is de distributie hier van?
End of explanation
<END_TASK>