Introductie tot API's

Gestroomlijnde data-inname met pandas

Amany Mahfouz

Instructor

Application Programming Interfaces

  • Bepaalt hoe een applicatie met andere programma's communiceert
  • Manier om data uit een applicatie te halen zonder database-details te kennen

Een formulier met enkele vakjes aangevinkt en andere leeg

Gestroomlijnde data-inname met pandas

Application Programming Interfaces

  • Bepaalt hoe een applicatie met andere programma's communiceert
  • Manier om data uit een applicatie te halen zonder database-details te kennen

Een formulier en een winkelpui. Een pijl geeft aan dat het formulier naar de winkel wordt gestuurd.

Gestroomlijnde data-inname met pandas

Application Programming Interfaces

  • Bepaalt hoe een applicatie met andere programma's communiceert
  • Manier om data uit een applicatie te halen zonder database-details te kennen

Een open pakje en een winkelpui. Het pakje staat waar het bestelformulier stond. Een pijl geeft aan dat de winkel het pakje heeft verstuurd.

Gestroomlijnde data-inname met pandas

Requests

  • Verstuur en ontvang data van websites
  • Niet gebonden aan een specifieke API
  • requests.get() om data van een URL op te halen

requests-logo

Gestroomlijnde data-inname met pandas

requests.get()

  • requests.get(url_string) om data van een URL op te halen
  • Keyword-argumenten
    • params: neemt een dictionary met parameters en waarden om de API-request aan te passen
    • headers: neemt een dictionary, kan worden gebruikt voor gebruikersauthenticatie bij de API
  • Resultaat: een response-object met data en metadata
    • response.json() geeft alleen de JSON-data terug
Gestroomlijnde data-inname met pandas

response.json() en pandas

  • response.json() geeft een dictionary terug
  • read_json() verwacht strings, geen dictionaries
  • Laad de response-JSON in een dataframe met pd.DataFrame()
    • read_json() geeft een fout!
Gestroomlijnde data-inname met pandas

Yelp Business Search API

Yelp-logo

Gestroomlijnde data-inname met pandas

Yelp Business Search API

Yelp Business Search API-documentatie. Endpoint en enkele parameters worden getoond.

Gestroomlijnde data-inname met pandas

Yelp Business Search API

Yelp Business Search API-documentatie. API-endpoint-URL is gemarkeerd.

Gestroomlijnde data-inname met pandas

Yelp Business Search API

Yelp Business Search API-documentatie. Een optionele parameter term is gemarkeerd.

Gestroomlijnde data-inname met pandas

Yelp Business Search API

Yelp Business Search API-documentatie. Vereiste locatieparameters zijn gemarkeerd.

Gestroomlijnde data-inname met pandas

Yelp Business Search API

Yelp Business Search API-documentatie, met een voorbeeld van response-JSON

Gestroomlijnde data-inname met pandas

Requests uitvoeren

import requests
import pandas as pd

api_url = "https://api.yelp.com/v3/businesses/search"
# Stel de parameter-dictionary in volgens de documentatie params = {"term": "bookstore", "location": "San Francisco"}
# Stel de header-dictionary in met API-sleutel volgens de documentatie headers = {"Authorization": "Bearer {}".format(api_key)}
# Roep de API aan response = requests.get(api_url, params=params, headers=headers)
Gestroomlijnde data-inname met pandas

Responses parsen

# Haal de JSON-data uit het response-object
data = response.json()
print(data)
{'businesses': [{'id': '_rbF2ooLcMRA7Kh8neIr4g', 'alias': 'city-lights-bookstore-san-francisco', 'name': 'City Lights Bookstore', 'image_url': 'https://s3-media1.fl.yelpcdn.com/bphoto/VRydkkpVbA3CeVLBKzs2Vw/o.jpg', 'is_closed': False,
# Laad businesses-data in een dataframe
bookstores = pd.DataFrame(data["businesses"])
print(bookstores.head(2))
                                  alias        ...                                                    url
0   city-lights-bookstore-san-francisco        ...      https://www.yelp.com/biz/city-lights-bookstore...
1  alexander-book-company-san-francisco        ...      https://www.yelp.com/biz/alexander-book-compan...

[2 rows x 16 columns]
Gestroomlijnde data-inname met pandas

Laten we oefenen!

Gestroomlijnde data-inname met pandas

Preparing Video For Download...