Introduction aux API

Ingestion de données rationalisée avec pandas

Amany Mahfouz

Instructor

Interfaces de programmation d'applications

  • Définit comment une application communique avec d'autres programmes
  • Façon d'obtenir des données d'une application sans connaître la base de données

Un formulaire avec certaines cases cochées et d'autres vides

Ingestion de données rationalisée avec pandas

Interfaces de programmation d'applications

  • Définit comment une application communique avec d'autres programmes
  • Façon d'obtenir des données d'une application sans connaître la base de données

Un formulaire et une vitrine. Une flèche indique que le formulaire est envoyé au magasin.

Ingestion de données rationalisée avec pandas

Interfaces de programmation d'applications

  • Définit comment une application communique avec d'autres programmes
  • Façon d'obtenir des données d'une application sans connaître la base de données

Un colis ouvert et une vitrine. Le colis remplace le bon de commande. Une flèche indique que le magasin a envoyé le colis.

Ingestion de données rationalisée avec pandas

Requests

  • Envoyer et recevoir des données de sites Web
  • Non lié à une API en particulier
  • requests.get() pour récupérer des données d'une URL

logo de requests

Ingestion de données rationalisée avec pandas

requests.get()

  • requests.get(url_string) pour obtenir des données d'une URL
  • Arguments nommés
    • Mot-clé params : prend un dictionnaire de paramètres et valeurs pour personnaliser la requête API
    • Mot-clé headers : prend un dictionnaire; peut servir à fournir l'authentification à l'API
  • Résultat : un objet response contenant données et métadonnées
    • response.json() renvoie uniquement les données JSON
Ingestion de données rationalisée avec pandas

response.json() et pandas

  • response.json() renvoie un dictionnaire
  • read_json() attend des chaînes, pas des dictionnaires
  • Charger le JSON de la réponse dans un dataframe avec pd.DataFrame()
    • read_json() produira une erreur !
Ingestion de données rationalisée avec pandas

API Yelp Business Search

logo Yelp

Ingestion de données rationalisée avec pandas

API Yelp Business Search

Documentation de l'API Yelp Business Search. Le point de terminaison de la requête et certains paramètres sont affichés.

Ingestion de données rationalisée avec pandas

API Yelp Business Search

Documentation de l'API Yelp Business Search. L'URL du point de terminaison de l'API est en surbrillance.

Ingestion de données rationalisée avec pandas

API Yelp Business Search

Documentation de l'API Yelp Business Search. Un paramètre facultatif term est en surbrillance.

Ingestion de données rationalisée avec pandas

API Yelp Business Search

Documentation de l'API Yelp Business Search. Les paramètres obligatoires de localisation sont en surbrillance.

Ingestion de données rationalisée avec pandas

API Yelp Business Search

Documentation de l'API Yelp Business Search, montrant un exemple de réponse JSON

Ingestion de données rationalisée avec pandas

Effectuer des requêtes

import requests
import pandas as pd

api_url = "https://api.yelp.com/v3/businesses/search"
# Set up parameter dictionary according to documentation params = {"term": "bookstore", "location": "San Francisco"}
# Set up header dictionary w/ API key according to documentation headers = {"Authorization": "Bearer {}".format(api_key)}
# Call the API response = requests.get(api_url, params=params, headers=headers)
Ingestion de données rationalisée avec pandas

Analyser les réponses

# Isolate the JSON data from the 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,
# Load businesses data to a 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]
Ingestion de données rationalisée avec pandas

Passons à la pratique !

Ingestion de données rationalisée avec pandas

Preparing Video For Download...