API 入門

pandasで効率よくデータを取り込む

Amany Mahfouz

Instructor

Application Programming Interfaces

  • アプリケーションが他プログラムと通信する方法を定義
  • データベース詳細を知らなくてもアプリからデータ取得

いくつかにチェックの入ったフォーム

pandasで効率よくデータを取り込む

Application Programming Interfaces

  • アプリケーションが他プログラムと通信する方法を定義
  • データベース詳細を知らなくてもアプリからデータ取得

フォームと店舗のイラスト。フォームが店に送られていることを示す矢印。

pandasで効率よくデータを取り込む

Application Programming Interfaces

  • アプリケーションが他プログラムと通信する方法を定義
  • データベース詳細を知らなくてもアプリからデータ取得

開封された荷物と店舗のイラスト。以前の注文票の位置に荷物。店から送られたことを示す矢印。

pandasで効率よくデータを取り込む

Requests

  • ウェブサイトとデータの送受信
  • 特定の API に依存しない
  • URL から取得は requests.get()

requests ロゴ

pandasで効率よくデータを取り込む

requests.get()

  • URL から取得するには requests.get(url_string)
  • キーワード引数
    • params: パラメータ辞書でリクエストをカスタマイズ
    • headers: ヘッダー辞書。API への認証に使用
  • 戻り値: データとメタデータを含む response オブジェクト
    • response.json() は JSON データのみを返す
pandasで効率よくデータを取り込む

response.json() と pandas

  • response.json() は辞書を返す
  • read_json() は辞書ではなく文字列を想定
  • pd.DataFrame() でレスポンス JSON をデータフレーム化
    • 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 のドキュメント。API エンドポイント URL が強調表示。

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...