Введение в API

Эффективный импорт данных с pandas

Amany Mahfouz

Instructor

Интерфейсы прикладного программирования

  • Определяет, как приложение взаимодействует с другими программами
  • Позволяет получать данные из приложения, не зная деталей его базы данных

Форма с заполненными и незаполненными полями

Эффективный импорт данных с pandas

Интерфейсы прикладного программирования

  • Определяет, как приложение взаимодействует с другими программами
  • Позволяет получать данные из приложения, не зная деталей его базы данных

Форма и витрина магазина. Стрелка показывает, что форма отправляется в магазин.

Эффективный импорт данных с pandas

Интерфейсы прикладного программирования

  • Определяет, как приложение взаимодействует с другими программами
  • Позволяет получать данные из приложения, не зная деталей его базы данных

Открытая посылка и витрина магазина. Посылка находится там, где раньше была форма заказа. Стрелка показывает, что магазин отправил посылку.

Эффективный импорт данных с 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...