Tijdreeksen
Wanneer dezelfde variabele op verschillende momenten gemeten wordt ontstaat een tijdreeks. De meeste cijfers van het CBS worden elke maand, elk kwartaal of elk jaar geactualiseerd. In deze handleiding wordt aan de hand van cijfers over toeristenbelasting uitgelegd hoe een tijdreeks verwerkt en gevisualiseerd kan worden. De informatie uit de Snelstartgids wordt bekend verondersteld.
De codevoorbeelden kunnen eenvoudig naar het klembord worden gekopieerd door op de knop in het codeblok te klikken. De voorbeelden op deze pagina zijn ook gebundeld te vinden op Github.
Keuzemenu programmeertaal:
Tabel 84120NED bevat gegevens over de belastingopbrengsten en de ontvangsten van wettelijke sociale premies van de overheid. De gegevens zijn uitgesplitst naar soort belasting of wettelijke sociale premie. De code van toeristenbelasting is op te zoeken in de metadata.
library(tidyverse)
library(cbsodataR)
# Download de metadata en zoek op "Toerist" in de codelijst
metadata <- cbs_get_meta("84120NED")
print(metadata$BelastingenEnWettelijkePremies %>%
filter(str_detect(Title, "Toerist")))
De Key
die hoort bij toeristenbelasting is A045081. Om alleen de juiste informatie op te halen voegen we het optionele argument BelastingenEnWettelijkePremies = "A045081"
toe aan cbs_get_data
.
# Download cijfers over toeristenbelasting
data <- cbs_get_data("84120NED",
BelastingenEnWettelijkePremies = "A045081") %>%
select(-BelastingenEnWettelijkePremies)
De data die met de API wordt binnengehaald bevat een kolom Perioden die de verslagperiode in het formaat yyyyXXww
aangegeeft, waarbij yyyy
het jaar is, XX
aangeeft of het jaarcijfers (JJ
), kwartaalcijfers (KW
) of maandcijfers (MM
) zijn en ww
het volgnummer is. Om de data verder te verwerken is het nodig om de perioden te converteren naar een standaardformaat en dit kan met de functie cbs_add_date_column
. Deze functie voegt een kolom Perioden_freq
toe met het type van de periode (maand/kwartaal/jaar) en een kolom met de startdatum van de periode. Bij jaarcijfers wordt de letter Y
in de kolom Perioden_freq
ingevuld. Vervolgens kan er eenvoudig op jaarcijfers gefilterd worden met filter(Perioden_freq == "Y")
.
# Voeg datumkolom toe en filter op jaarcijfers
data <- data %>%
cbs_add_date_column() %>%
filter(Perioden_freq == "Y") %>%
select(-Perioden_freq)
Tenslotte kan er een grafiek van de tijdreeks worden gemaakt met bijvoorbeeld ggplot2
.
# Plot een grafiek
ggplot(data, aes(x=Perioden_Date,
y=OntvangenBelastingenEnWettPremies_1)) +
geom_line() +
ylim(0,250)+
labs(title = "Opbrengst toeristenbelasting per jaar", x = "",
y = "mln euro")
Tabel 84120NED bevat gegevens over de belastingopbrengsten en de ontvangsten van wettelijke sociale premies van de overheid. De gegevens zijn uitgesplitst naar soort belasting of wettelijke sociale premie. De kolomnaam van toeristenbelasting is op te zoeken in de metadata.
import pandas as pd
import cbsodata
# Download de codelijst over belastingen en zoek op "Toerist"
metadata = pd.DataFrame(cbsodata.get_meta('84120NED', 'BelastingenEnWettelijkePremies'))
print(metadata[metadata['Title'].str.contains('Toerist')][['Key','Title']])
De Key
die hoort bij toeristenbelasting is A045081. Om alleen de juiste informatie op te halen voegen we het filter "BelastingenEnWettelijkePremies eq 'A045081'""
toe aan get_data
.
# Download cijfers over toeristenbelasting
data = pd.DataFrame(cbsodata.get_data('84120NED', filters = "BelastingenEnWettelijkePremies eq 'A045081'"))
De jaarcijfers kunnen gefilterd worden met de reguliere expressie ^\d{4}$
die controleert of een tekst bestaat uit precies vier cijfers.
# Filter op jaarcijfers
data = data[data['Perioden'].str.match("^\d{4}$")]
Tenslotte kan er een grafiek van de tijdreeks worden gemaakt met bijvoorbeeld matplotlib
.
# Plot een grafiek
p = data.plot(x = 'Perioden',
y = 'OntvangenBelastingenEnWettPremies_1',legend = False)
p.set_title('Opbrengst toeristenbelasting per jaar')
p.set_ylim([0,250])
p.set_xlabel("")
p.set_ylabel("mln euro")