地層を剥がす

声を失った人間の発声練習です

e-StatのAPIに触ってみたよ 「統計表の情報を取得するのが意外と面倒」編

最近、仕事で行政の統計を見ることが多い。「行政の統計」といえば「e-Stat」。そういえば同サイトではAPIを公開していたなと思い、触ってみることにした。同APIの利用にあたっては、ユーザー登録をし、アプリケーションIDを取得する必要がある。詳細は以下で確認してほしい。

www.e-stat.go.jp


まずは先人の知恵に触れようと考え、Qiitaでいくつかの記事を参照した。とくに役立ったものがこれだ。

qiita.com

この記事では、e-Stat APIは「沼」であると指摘し、全部で4つの沼ポイントを挙げている。

ポイント1:データ多すぎ問題
ポイント2:API結構複雑だよ問題
ポイント3:〇〇コード多すぎ問題
ポイント4:意外とGISで使えるデータないよ問題

とくに重要なのがポイント2だ。e-Stat APIは、全部で7つある。以下がそれだ。

統計表情報取得
メタ情報取得
統計データ取得
データセット登録
データセット参照
データカタログ情報取得
統計データ一括取得

統計データを取得するには、まず統計表情報APIで情報を取得し、どのような統計表があるかを知るステップを踏まなければならない。そこで、まずは試してみることにした。

import requests
import pandas as pd
import json

url = 'http://api.e-stat.go.jp/rest/3.0/app/json/getStatsList'
params = {
'appId':'xxxxxxxxxxxxxxxx',
}

res = requests.get(url, params=params)
content = json.loads(res.content)
print(content)

すると、以下のようなエラーメッセージが表示された。

IOPub data rate exceeded.
The Jupyter server will temporarily stop sending output
to the client in order to avoid crashing it.
To change this limit, set the config variable
`--ServerApp.iopub_data_rate_limit`.

長々と言われてるけど、要は取得したデータが大きすぎてこのままの設定じゃ表示できないよ、ってことだろう。十数万件の統計表情報を取得したら、こうなっても不思議ではない。というか、当たり前だ。でもメンドい……。(続く)