【Python】 世界銀行のTCdata360 APIからデータ取得

TCdata360は世界銀行が提供しているデータベースであり、様々な情報源から貿易や競争力などに関するデータをまとめて提供してくれる。

世界銀行のデータベースからのデータ取得はpandas-datareaderを使えば簡単に行えるが、世界銀行のTCdata360が提供するデータの取得はできない。

そこでPythonでTCdata360のAPIからデータを取得する方法を記録しておく。

クロスセクションデータ

複数国のある年の特定指標を取得する。

import pandas as pd
import requests

def TCdata(cs_list,indicator,year):
    # yearには特定の年を指定
    countries = '%2C'.join(cs_list)
    url = 'https://tcdata360-backend.worldbank.org/api/v1/data?countries={}&indicators={}&timeframes={}'.format(countries,indicator,year)
    r = requests.get(url)
    r = r.json()
    countries = [i['name'] for i in r['countries']]
    values = [i['indicators'][0]['values'][year] for i in r['data']]
    col = r['indicators'][0]['name']
    df = pd.DataFrame(data=values,index=countries,columns=[col])
    return df

cs_listに対象にしたい国を3桁のISO国コードをリストにして渡す。

yearには取得対象の年を指定。

これでTCdata()を実行すればデータフレームでデータ取得ができる。

タイムシリーズデータやパネルデータに関してはTCdata360から取得が必要になったことがないため、もし今後必要になった場合に追記したいと思う。