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() 需要字串,不是字典
  • pd.DataFrame() 將回應的 JSON 載入成 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 說明文件。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"
# 依照文件設定參數字典 params = {"term": "bookstore", "location": "San Francisco"}
# 依照文件設定含 API 金鑰的表頭字典 headers = {"Authorization": "Bearer {}".format(api_key)}
# 呼叫 API response = requests.get(api_url, params=params, headers=headers)
使用 pandas 的精實資料導入

解析回應

# 從回應物件取出 JSON 資料
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,
# 將 businesses 載入成 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...