api-batches-hoe-uitleg-python

In dit blog gaan we in hoe je grote API calls opdeelt in batches met Python. Dit kan noodzakelijk zijn als je grote hoeveelheden data op wilt halen. Python is een programmeertaal waarmee je makkelijk interactie kunt hebben met APIs. Python wordt veel gebruikt door data scientists in data science vraagstukken en kent enorm veel toepassingen.

In dit blog

In dit blog behandelen we de volgende onderwerpen:

Wat is een API?

API staat voor Application Programming Interface. Dit is een gestandaardiseerde en gestructureerde manier om met andere applicaties interactie te hebben.

In onderstaande afbeelding zie je simpel visueel weergegeven hoe een API werkt als je data ophaalt met een GET request.
verbinden met een api in python voorbeeld tutorial

Om aan de slag te gaan met APIs kun je ook onze andere blogs hierover raadplegen.

Hoe haal ik in batches data op uit een API?

In sommige gevallen is het de hoeveelheid data die je op kunt halen beperkt. Bij het CBS (Centraal Bureau voor de Statistiek) API is dit bijvoorbeeld beperkt op 10.000 rijen.

Dat zie je in onderstaand voorbeeld:

import requests

api_url = 'https://opendata.cbs.nl/ODataFeed/odata/83625NED/TypedDataSet'

headers = {
    'accept': 'application/json'
}

response = requests.get(api_url, headers=headers)

len(response.json()['value'])
10000

We krijgen hier "maar" 10.000 rijen terug.

Stap 1: Het aantal datapunten opvragen

In zo'n geval kun je meestal wel het totale aantal datapunten opvragen.

Dan weet je wat je hebt en wat je mist.

Je ziet hoe je dat met de CBS API doet in het volgende voorbeeld.

NB: per API kan dit verschillen, kijk hiervoor altijd in de documentatie van de API.

import requests

api_url = 'https://opendata.cbs.nl/ODataFeed/odata/83625NED/TypedDataSet/$count'

headers = {
    'accept': 'application/json'
}

response = requests.get(api_url)

count_rows = response.json()

print(count_rows)
19240

Je ziet dat het aantal groter is dan 10.000.

Met vertrouwen Python inzetten voor data analyses? Schrijf je in voor een van onze trainingen.



Stap 2: Opdelen in batches

We kunnen per GET call 10.000 rijen ophalen.

Hierdoor kunnen we de opdracht in batches opdelen, om toch alle data te verkrijgen.

In onderstaande code berekenen we het aantal benodigde batches:

import math

PAGE_SIZE = 10000

pages = math.ceil(count_rows / PAGE_SIZE)

print(pages)
2

Stap 3: Ophalen in batches

Nu we weten hoeveel batches er nodig zijn, kunnen we de data op gaan halen.

In onderstaande code doen we dit, met een [for loop](https://datasciencepartners.nl/python-for-loop/ "for loop").

import pandas as pd

api_url = 'https://opendata.cbs.nl/ODataFeed/odata/83625NED/TypedDataSet'

headers = {
    'accept': 'application/json'
}

df = pd.DataFrame()

for page_number in range(pages):
    params = {
        '$skip': page_number * PAGE_SIZE,
    }
    response = requests.get(api_url, headers=headers, params=params)
    json_data = response.json()['value']
    _df = pd.DataFrame(json_data)
    df = pd.concat([df, _df], ignore_index=True)

df
IDRegioSPeriodenGemiddeldeVerkoopprijs_1
00NL011995JJ0093750.0
11NL011996JJ00102607.0
22NL011997JJ00113163.0
33NL011998JJ00124540.0
44NL011999JJ00144778.0
...............
1923519235GM01932016JJ00228479.0
1923619236GM01932017JJ00245803.0
1923719237GM01932018JJ00279684.0
1923819238GM01932019JJ00293098.0
1923919239GM01932020JJ00315874.0

19240 rows × 4 columns

Je ziet dat we nu alle data hebben!

Om te onthouden

  • Soms wil je grotere hoeveelheden data ophalen dan direct mogelijk is met een API.
  • Dan kun je de data batchgewijs in meerdere herhalingen ophalen.
  • Kijk altijd in de documentatie van de API die je gebruikt hoe je dit doet. Het verschilt per API.

Wil je nog veel meer leren over met mogelijkheden met Python voor Data Science? Schrijf je dan in voor onze Python cursus voor data science, onze machine learning training, onze data science opleiding of onze data science bootcamp en leer met vertrouwen te programmeren en analyseren in Python. Nadat je een van onze trainingen hebt gevolgd kun je zelfstandig verder aan de slag. Je kunt ook altijd even contact opnemen als je een vraag hebt. Bij al deze trainingen is het mogelijk een zelfstudie add-on te selecteren waarin je meer leert over werken met APIs vanuit Python

Download één van onze opleidingsbrochures voor meer informatie

by: