Snelstartgids

Icoon computer

De OData API van het Centraal Bureau voor de Statistiek ontsluit de StatLine-datasets van het CBS in verschillende formaten die eenvoudig ingelezen kunnen worden in computerprogramma's. In deze snelstartgids wordt uitgelegd hoe de Wijken- en Buurtinfo uit 2017 (tabel 83765NED) ingeladen kan worden. Deze handleiding is bedoeld voor gebruikers van R of Python. Als voorkennis wordt verondersteld dat de gebruiker packages kan installeren en kan werken met functies en variabelen.

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:

Voor R-gebruikers is het package cbsodataR beschikbaar. Dit package is te installeren door eenmalig het commando install.packages("cbsodataR") uit te voeren. Een overzicht van alle Statlinetabellen is op te vragen met cbs_get_toc().

Na het kiezen van een tabel uit het overzicht kan de uitgekozen tabel gedownload worden door cbs_get_data() aan te roepen met de tabelcode als argument. Met cbs_get_meta() kan de metadata van een tabel opgevraagd worden. De metadata bevat informatie over de inhoud en structuur van een dataset.

# Eenmalig uitvoeren:
# install.packages("cbsodataR")

library(cbsodataR)

# Downloaden van tabeloverzicht
toc <- cbs_get_toc()
head(toc)

# Downloaden van gehele tabel (kan een halve minuut duren)
data <- cbs_get_data("83765NED")
head(data)

# Downloaden van metadata
metadata <- cbs_get_meta("83765NED")
head(metadata)

Bij het werken met grote datasets is het efficiënter om niet de gehele dataset, maar slechts een gedeelte op te halen. Een lijst van gewenste kolommen kan in de parameter select meegegeven worden aan cbs_get_data(). Rijen kunnen gefilterd worden met een of meerdere optionele argumenten van de vorm = . De namen en codes van de dimensies zijn te vinden in de metadata van een tabel. Deze optionele argumenten moeten direct na de tabelcode worden toegevoegd. In het volgende voorbeeld wordt het aantal inwoners van de gemeente Amsterdam opgevraagd.

# Downloaden van selectie van data
data <- cbs_get_data("83765NED", 
             WijkenEnBuurten = "GM0363    ",
             select = c("WijkenEnBuurten", "AantalInwoners_5"))
head(data)
Het dataframe data heeft nu slechts één rij en twee kolommen.

Voor Python-gebruikers is het package cbsodata beschikbaar. Dit package is eenvoudig met pip te installeren door eenmalig het commando pip install --user cbsodata uit te voeren in een opdrachtprompt. Het package is compatibel met Pandas, een veelgebruikte Pythonbibliotheek die gericht is op data-analyse. Een overzicht van alle Statlinetabellen is op te vragen met get_table_list().

Na het kiezen van een tabel uit het overzicht kan de uitgekozen tabel gedownload worden door get_data() aan te roepen met de tabelcode als argument. Met get_meta() kan de metadata van een tabel opgevraagd worden. De metadata bevat informatie over de inhoud en structuur van een dataset.

import pandas as pd
import cbsodata

# Downloaden van tabeloverzicht
toc = pd.DataFrame(cbsodata.get_table_list())

# Downloaden van gehele tabel (kan een halve minuut duren)
data = pd.DataFrame(cbsodata.get_data('83765NED'))
print(data.head())

# Downloaden van metadata
metadata = pd.DataFrame(cbsodata.get_meta('83765NED', 'DataProperties'))
print(metadata[['Key','Title']])

Bij het werken met grote datasets is het efficiënter om niet de gehele dataset, maar slechts een gedeelte op te halen. Een lijst van gewenste kolommen kan in de parameter select meegegeven worden aan get_data(). Rijen kunnen gefilterd worden met door de parameter filters volgens de vorm " eq " in te vullen. De namen en codes van de dimensies zijn te vinden in de metadata van een tabel. In het volgende voorbeeld wordt het aantal inwoners van de gemeente Amsterdam opgevraagd.

# Downloaden van selectie van data
data = pd.DataFrame(
        cbsodata.get_data('83765NED', 
                          filters="WijkenEnBuurten eq 'GM0363    '",
                          select=['WijkenEnBuurten','AantalInwoners_5']))
print(data.head())
De output is een dataframe met slechts één rij en twee kolommen in plaats van de gehele tabel.