Вступ до API

Оптимізоване завантаження даних із pandas

Amany Mahfouz

Instructor

Application Programming Interfaces

  • Визначає, як застосунок обмінюється даними з іншими програмами
  • Спосіб отримати дані із застосунку без знання деталей бази даних

Форма: деякі поля позначено, інші порожні

Оптимізоване завантаження даних із pandas

Application Programming Interfaces

  • Визначає, як застосунок обмінюється даними з іншими програмами
  • Спосіб отримати дані із застосунку без знання деталей бази даних

Форма та крамниця. Стрілка показує, що форму надсилають у крамницю.

Оптимізоване завантаження даних із pandas

Application Programming Interfaces

  • Визначає, як застосунок обмінюється даними з іншими програмами
  • Спосіб отримати дані із застосунку без знання деталей бази даних

Відкритий пакунок і крамниця. Пакунок на місці, де була форма замовлення. Стрілка показує, що крамниця надіслала пакунок.

Оптимізоване завантаження даних із pandas

Requests

  • Надсилати й отримувати дані з вебсайтів
  • Не привʼязано до конкретного API
  • requests.get() для отримання даних з URL

логотип requests

Оптимізоване завантаження даних із pandas

requests.get()

  • requests.get(url_string) для отримання даних з URL
  • Іменовані аргументи
    • ключ params: приймає словник параметрів і значень для налаштування запиту до API
    • ключ headers: приймає словник; можна використати для автентифікації користувача в API
  • Результат: обʼєкт response з даними та метаданими
    • response.json() повертає лише JSON-дані
Оптимізоване завантаження даних із pandas

response.json() і pandas

  • response.json() повертає словник
  • read_json() очікує рядки, не словники
  • Завантажте JSON відповіді в датафрейм через pd.DataFrame()
    • read_json() спричинить помилку!
Оптимізоване завантаження даних із pandas

Yelp Business Search API

Логотип Yelp

Оптимізоване завантаження даних із pandas

Yelp Business Search API

Документація Yelp Business Search API. Показано кінцеву точку запиту та деякі параметри.

Оптимізоване завантаження даних із pandas

Yelp Business Search API

Документація Yelp Business Search API. Виділено URL кінцевої точки API.

Оптимізоване завантаження даних із pandas

Yelp Business Search API

Документація Yelp Business Search API. Виділено необовʼязковий параметр term.

Оптимізоване завантаження даних із pandas

Yelp Business Search API

Документація Yelp Business Search API. Виділено обовʼязкові параметри місця.

Оптимізоване завантаження даних із pandas

Yelp Business Search API

Документація Yelp Business Search API з прикладом відповіді JSON

Оптимізоване завантаження даних із pandas

Виконання запитів

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)
Оптимізоване завантаження даних із pandas

Розбір відповідей

# 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]
Оптимізоване завантаження даних із pandas

Давайте потренуємось!

Оптимізоване завантаження даних із pandas

Preparing Video For Download...