Introducere în API-uri

Ingestie eficientă a datelor cu pandas

Amany Mahfouz

Instructor

Interfețe de programare a aplicațiilor

  • Definește modul în care o aplicație comunică cu alte programe
  • Modalitate de a obține date dintr-o aplicație fără a cunoaște detaliile bazei de date

Un formular cu unele câmpuri completate și altele goale

Ingestie eficientă a datelor cu pandas

Interfețe de programare a aplicațiilor

  • Definește modul în care o aplicație comunică cu alte programe
  • Modalitate de a obține date dintr-o aplicație fără a cunoaște detaliile bazei de date

Un formular și o vitrină. O săgeată indică faptul că formularul este trimis la magazin.

Ingestie eficientă a datelor cu pandas

Interfețe de programare a aplicațiilor

  • Definește modul în care o aplicație comunică cu alte programe
  • Modalitate de a obține date dintr-o aplicație fără a cunoaște detaliile bazei de date

Un pachet deschis și o vitrină. Pachetul se află în locul formularului de comandă. O săgeată indică faptul că magazinul a trimis pachetul.

Ingestie eficientă a datelor cu pandas

Requests

  • Trimite și primește date de pe site-uri web
  • Nu este legat de un anumit API
  • requests.get() pentru a obține date de la un URL

Logo requests

Ingestie eficientă a datelor cu pandas

requests.get()

  • requests.get(url_string) pentru a obține date de la un URL
  • Argumente cheie
    • Cuvântul cheie params: primește un dicționar de parametri pentru personalizarea cererii API
    • Cuvântul cheie headers: primește un dicționar, poate fi folosit pentru autentificarea utilizatorului
  • Rezultat: un obiect response, cu date și metadate
    • response.json() returnează doar datele JSON
Ingestie eficientă a datelor cu pandas

response.json() și pandas

  • response.json() returnează un dicționar
  • read_json() acceptă șiruri de caractere, nu dicționare
  • Încărcați JSON-ul răspunsului într-un dataframe cu pd.DataFrame()
    • read_json() va genera o eroare!
Ingestie eficientă a datelor cu pandas

API-ul Yelp Business Search

Logo Yelp

Ingestie eficientă a datelor cu pandas

API-ul Yelp Business Search

Documentația API-ului Yelp Business Search. Sunt afișate endpoint-ul de cerere și câțiva parametri.

Ingestie eficientă a datelor cu pandas

API-ul Yelp Business Search

Documentația API-ului Yelp Business Search. URL-ul endpoint-ului API este evidențiat.

Ingestie eficientă a datelor cu pandas

API-ul Yelp Business Search

Documentația API-ului Yelp Business Search. Un parametru opțional de tip term este evidențiat.

Ingestie eficientă a datelor cu pandas

API-ul Yelp Business Search

Documentația API-ului Yelp Business Search. Parametrii de localizare obligatorii sunt evidențiați.

Ingestie eficientă a datelor cu pandas

API-ul Yelp Business Search

Documentația API-ului Yelp Business Search, cu un exemplu de răspuns JSON

Ingestie eficientă a datelor cu pandas

Realizarea cererilor

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)
Ingestie eficientă a datelor cu pandas

Procesarea răspunsurilor

# 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]
Ingestie eficientă a datelor cu pandas

Să exersăm!

Ingestie eficientă a datelor cu pandas

Preparing Video For Download...