e-Stat APIをPythonから使って地理データを可視化してみた

e-Stat : https://www.e-stat.go.jp/SG1/estat/eStatTopPortal.do

e-Stat API : http://www.e-stat.go.jp/api/

e-Statは日本政府が調査した統計データを閲覧・ダウンロードできるよう管理されたポータルサイトです。

このサイトからよく人口データなどをダウンロードして利用しており、以前からお世話になっているのですが、実はAPI機能も提供しているようで、前々から少し気になっておりましたので、この度、PythonからAPI経由でデータ取得をして、可視化するところまでをやってみました。

e-Stat API 利用登録

まずはAPI利用登録が必要ですが、こちらは簡単で、メールアドレスや所属などを入力するだけです。

ユーザー登録をし、ログインをしますと、アプリケーションIDを取得するページに行くことができます。

APIを自分が公開しているWebサイトから利用したい場合は、そのWebサイトのURLを入力します。

今回のように試験的に利用したいだけであれば http://localhost/ を入力しておけば良いようです。

これで「発行」を押すと、「appId」にアプリケーションIDが発行されます。

これをリクエストパラメータで渡すことで、データを取得することが出来るようです。

e-Stat API 使い方

API仕様と公式ページの「提供データ」によれば、統計表情報取得「getStatsList」で統計表情報取得ができ、パラメータの政府統計コードは、例えば「国勢調査」は「00200521」とのこと。

これをリクエストパラメータに設定してあげてアクセスすると、これまでに調査された国勢調査のデータ一覧が確認できます。

取得したい国勢調査のデータのデータIDを確認して、統計データ取得「getStatsData」でアクセスすると、項目などの情報とデータが取得できます。

今回は、項目の絞り込みなどのパラメータも確認して、「getSimpleStatsData」でCSVで取得することにしました。

CSVでデータを落としてきてしまえば、あとはPythonでデータ加工をするのと同じですので、適当にデータフレーム化しておきます。

folium

Pythonで地図を可視化する方法の紹介です。

Leaflef.jsとD3.jsでマップデータを可視化してみた
Leaflet.jsというWebマップ表示ライブラリを知りましたので、使ってみました。Leaflet.jsLeaflet.js : http://leafletjs.com/結構前からあったそうな。※画像をクリックするとページを移動します。OpenStreetMapは知っていたけども、敷居が高そうと思っていましたが、...

過去記事で地図クライアントツールのLeaflet.jsを使ったことがありましたが、実はこれをPython上で動作させるモジュール「folium」というものがありますので、これを使います。

folium : https://github.com/python-visualization/folium

使い方がLeaflet.jsと似ていますので、分かりやすいです。

さらにgeojsonやtopojsonを読み込むことができますので、日本の都道府県データのgeojsonと、e-Stat APIからダウンロードして加工したデータフレームを紐付けて、このfoliumでLeaflet上に可視化します。

実装が下記になります。

データをただ可視化するだけであれば他のツールでも構いませんが、データ分析のライブラリが豊富なPythonで可視化ができましたので、何かしら分析をした地域データを可視化する場合には、この環境は便利ではないかなと思います。

ちなみに、今回一番苦戦したのは、データ加工とかでもなく、foliumとかでもなく、e-StatのAPIの使い方を理解することでした笑

もともと細かく項目や集計単位を設定してダウンロードできるサイトでしたから、これをAPIにするとなると、かなりのパラメータを渡さないといけなくなるだろうなぁと思っていました。

ある程度機能を制限して、妥協したデータを落としてくる形になるのかなーと思っていたのですが、まさかほとんどできるとは…。

初めて使う人は、とりあえず最初は普通にポータルサイトからデータをダウンロードしてくるところから慣れておいた方が、API使う時も混乱せずに済むのかなーと思います。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です