#26 RESAS(地域経済分析システム)APIでデータを取得するPythonコード
RESAS(リーサス)は、内閣府が運用している、産業構造や人口動態、人の流れなどに関する官民のいわゆるビッグデータを集約し、可視化を試みるシステム。無料。
左上のプルダウンからいろいろデータが選べる。
新潟県(2015年)の地域循環図なんてのも簡単
岐阜県高山市(2019年)の宿泊者の属性のグラフ
これらはエクセルでダウンロードできます。
これでもいいのですが、APIがあるのでこれでデータ取得してクラウド上で分析してみましょう。google colaboratory のためのpythonコードを紹介します。
事前に登録してAPIキーを取得しておく必要があります。トップページの左下にあります。
api_key = "×××(キーを入れる)"
api_key = "×××(キーを入れる)"
!apt-get -y install fonts-ipafont-gothic
!pip install requests
import requests
import json
req = requests.get(
"https://opendata.resas-portal.go.jp/api/v1/prefectures",
headers={
"Content-Type": "application/json",
"X-API-KEY": api_key
}
)
data = json.loads(req._content.decode('UTF-8'))
data
これで県一覧が出ました。山梨県は19ということで、その数字を選んでみます。次に市町村一覧を得ます。
import requests
import json
req = requests.get(
"https://opendata.resas-portal.go.jp/api/v1/cities?prefCode=19",
headers={
"Content-Type": "application/json",
"X-API-KEY": api_key
}
)
data = json.loads(req._content.decode('UTF-8'))
data
笛吹市は19211らしいです。
山梨県の開業率をGETしてみます
import requests
import json
req = requests.get(
"https://opendata.resas-portal.go.jp/api/v1/municipality/foundation/perYear?prefCode=19&cityCode=-",
headers={
"Content-Type": "application/json",
"X-API-KEY": api_key
}
)
data = json.loads(req._content.decode('UTF-8'))
data
笛吹市の開業率です。
import requests
import json
req = requests.get(
"https://opendata.resas-portal.go.jp/api/v1/municipality/foundation/perYear?prefCode=19&cityCode=19211",
headers={
"Content-Type": "application/json",
"X-API-KEY": api_key
}
)
data = json.loads(req._content.decode('UTF-8'))
data
表にしてアウトプットします
import pandas as pd
req = requests.get(
"https://opendata.resas-portal.go.jp/api/v1/municipality/foundation/perYear?prefCode=19&cityCode=19211",
headers={
"Content-Type": "application/json",
"X-API-KEY": api_key
}
)
data = json.loads(req._content.decode('UTF-8'))
df = pd.json_normalize(data['result']['data'])
df = df.set_index(["year"])
df = df.rename(columns={"value": "笛吹市"})
df
笛吹市
year
2006~2009年 2.37
2009~2012年 0.87
2012~2014年 4.39
2014~2016年 3.80
グラフにしてみます
df.plot()