前置き
O'Reilly Japan の「PythonとJavaScriptではじめるデータビジュアライゼーション」を参考に、勉強をしています。
今回は、OECD(経済能力開発機構)の提供するデータセットを、OECDのWebAPIにより取得します。
OECD APIについて
OECD API は、HTTPメソッドGETにより取得操作を指定する RESTful APIだそうです。
URLの例
http://stats.oecd.org/sdmx-json/data/QNA # ONA(Quarterly National Accounts : 四半期国民経済計算)データセット
/USA+JPN.GDP+B1_GE.CUR+VOBARSA.Q # 位置、主題、スケール、頻度の4つの特製
/all?startTime=2016-Q1&endTime=2017-Q1 # 期間
データセット名とドット区切りの特性でクエリを構築しています。
それぞれの特性は、+で区切って複数の値を指定することができます。
URLは標準的なHTTPパラメータの指定(?で始まり&で区切る)も可能です。
requests で RESTful APIを使用した実装例
OECD(経済協力開発機構)の提供するデータセットを取得する関数
oecd_api.py
import requests
OECD_ROOT_URL = 'http://stats.oecd.org/sdmx-json/data'
# OECD API用のURLを作成してレスポンスを返す
def make_OECD_request(dsname, dimensions, params=None, root_dir=OECD_ROOT_URL):
if params is None:
params = {}
dim_args = ['+'.join(d) for d in dimensions]
dim_str = '.'.join(dim_args)
url = root_dir + '/' + dsname + '/' + dim_str + '/all'
print('Requesting URL: ' + url)
return requests.get(url, params=params)
2016Q1 から 2017Q1 までの米国と日本の経済データを取得
>>> import oecd_api
>>>
>>> # データ取得
>>> response = oecd_api.make_OECD_request('QNA',(('USA', 'JPN'),('GDP', 'B1_GE'),('CUR', 'VOBARSA'), ('Q')),{'startTime':'2016-Q1', 'endTime':'2017-Q1'})
Requesting URL: http://stats.oecd.org/sdmx-json/data/QNA/USA+JPN.GDP+B1_GE.CUR+VOBARSA.Q/all
>>> # レスポンスのステータスコード
>>> response.status_code
200
>>> # エンコードされたURL
>>> response.url
'http://stats.oecd.org/sdmx-json/data/QNA/USA+JPN.GDP+B1_GE.CUR+VOBARSA.Q/all?startTime=2016-Q1&endTime=2017-Q1'
>>> # JSON形式で取得
>>> json_data = response.json()
参考
OECDのWebAPIのドキュメントページ(API documentation (SDMX-JSON))
https://data.oecd.org/api/sdmx-json-documentation/
Requests クイックスタート
http://requests-docs-ja.readthedocs.io/en/latest/user/quickstart/#url