1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FREDの経済指標をPythonの標準ライブラリで取得

Posted at

FREDはセントルイス連邦準備銀行の提供する経済統計データのデータベースである。ここから経済指標(今回は米国の失業率)をPythonで取得することを試みる。「FRED python 取得」などとググってみるとpandas_datareaderやその他のライブラリを使用している例が見受けられたが、FREDのAPIのドキュメントを読んでみるとごく普通のシンプルなAPIだったので、標準ライブラリのurllibを使う無難な手法を採用した。

まずはHPにアクセスしてアカウントを作成し、API Keyを取得する。API Keyのページはアカウント作成後ページ右上の三本線 -> Myaccount -> API Keysで到達する。

API Keyを取得できたら下記のコードのAPI_KEYの部分を書き換えて実行する。失業率ではなく他の指標を取得したい場合はその下のSERIES_IDを変える。標準ライブラリしか使わないので事前にpip install hoge等は不要。

import urllib.request
import json

def main():
  API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  SERIES_ID = "UNRATE"
  URL = f"https://api.stlouisfed.org/fred/series/observations"
  params = {
    "api_key": API_KEY,
    "file_type": "json",
    "series_id": SERIES_ID
  }
  req = urllib.request.Request(f"{URL}?{urllib.parse.urlencode(params)}")
  with urllib.request.urlopen(req) as res:
    data = json.loads(res.read().decode("utf-8"))
  # 取得した値がデフォルトではstr型なのでfloat型float型に変換する
  for d in data["observations"]:
    d["value"] = float(d["value"])
  # 綺麗に表示
  import pprint
  pprint.pprint(data)
  
if __name__ == '__main__':
  main()

実行結果:

{'count': 921,
 'file_type': 'json',
 'limit': 100000,
 'observation_end': '9999-12-31',
 'observation_start': '1600-01-01',
 'observations': [{'date': '1948-01-01',
                   'realtime_end': '2024-10-04',
                   'realtime_start': '2024-10-04',
                   'value': 3.4},
                  {'date': '1948-02-01',
                   'realtime_end': '2024-10-04',
                   'realtime_start': '2024-10-04',
                   'value': 3.8},
                  {'date': '1948-03-01',
                   'realtime_end': '2024-10-04',
                   'realtime_start': '2024-10-04',
                   'value': 4.0},
(====================== 中略 ======================{'date': '2024-09-01',
                   'realtime_end': '2024-10-04',
                   'realtime_start': '2024-10-04',
                   'value': 4.1}],
 'offset': 0,
 'order_by': 'observation_date',
 'output_type': 1,
 'realtime_end': '2024-10-04',
 'realtime_start': '2024-10-04',
 'sort_order': 'asc',
 'units': 'lin'}

参考

FREDのAPIのドキュメント:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?