Introduktion till API:er

Effektiv datainläsning med pandas

Amany Mahfouz

Instructor

Application Programming Interfaces

  • Definierar hur en applikation kommunicerar med andra program
  • Sätt att hämta data från en applikation utan att känna till databasdetaljer

Ett formulär med vissa fält ifyllda och andra tomma

Effektiv datainläsning med pandas

Application Programming Interfaces

  • Definierar hur en applikation kommunicerar med andra program
  • Sätt att hämta data från en applikation utan att känna till databasdetaljer

Ett formulär och en butik. En pil visar att formuläret skickas till butiken.

Effektiv datainläsning med pandas

Application Programming Interfaces

  • Definierar hur en applikation kommunicerar med andra program
  • Sätt att hämta data från en applikation utan att känna till databasdetaljer

Ett öppet paket och en butik. Paketet har ersatt orderformuläret. En pil visar att butiken har skickat paketet.

Effektiv datainläsning med pandas

Requests

  • Skickar och hämtar data från webbplatser
  • Inte bundet till ett specifikt API
  • requests.get() för att hämta data från en URL

requests logo

Effektiv datainläsning med pandas

requests.get()

  • requests.get(url_string) för att hämta data från en URL
  • Nyckelordsargument
    • Nyckelordet params: tar en ordbok med parametrar och värden för att anpassa API-begäran
    • Nyckelordet headers: tar en ordbok, kan användas för att autentisera användaren mot API:et
  • Resultat: ett response-objekt med data och metadata
    • response.json() returnerar enbart JSON-data
Effektiv datainläsning med pandas

response.json() och pandas

  • response.json() returnerar en ordbok
  • read_json() förväntar sig strängar, inte ordböcker
  • Läs in JSON-svaret till en dataram med pd.DataFrame()
    • read_json() ger ett fel!
Effektiv datainläsning med pandas

Yelp Business Search API

Yelp logo

Effektiv datainläsning med pandas

Yelp Business Search API

Dokumentation för Yelp Business Search API. Begärans endpoint och några parametrar visas.

Effektiv datainläsning med pandas

Yelp Business Search API

Dokumentation för Yelp Business Search API. API-endpointens URL är markerad.

Effektiv datainläsning med pandas

Yelp Business Search API

Dokumentation för Yelp Business Search API. En valfri term-parameter är markerad.

Effektiv datainläsning med pandas

Yelp Business Search API

Dokumentation för Yelp Business Search API. Obligatoriska platsparametrar är markerade.

Effektiv datainläsning med pandas

Yelp Business Search API

Dokumentation för Yelp Business Search API med ett exempel på JSON-svar

Effektiv datainläsning med pandas

Skicka förfrågningar

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)
Effektiv datainläsning med pandas

Tolka svar

# 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]
Effektiv datainläsning med pandas

Nu kör vi en övning!

Effektiv datainläsning med pandas

Preparing Video For Download...