RESASというデータセットのAPIをPythonでいじってみたときのメモ2
RESASというデータセットがあり利用が無料ぽいので試してみた その2
今度は、csvファイルに落とし込むまでを記録したので実用に近づいたと思われる。
resas.go.jp
今回は県別の従業員数をcsvファイルにするまでを目標とします。
opendata.resas-portal.go.jp
今回もまずpythonのスクレイピングモジュールで有名なもののひとつ、requestsでやってみました。
>>>import requests >>>BASE_API_END_POINT = "https://opendata.resas-portal.go.jp/" >>>TARGET_URL = "api/v1/municipality/employee/perYear" >>>headers = {'X-API-KEY': '*****(API登録して取得する)******', 'content-type': 'application/json;charset=UTF-8'} #ヘッダ情報を追加 >>>TARGET = BASE_API_END_POINT+TARGET_URL >>>payload = {'prefCode': '12'} #今回はパラメータを渡します。12は千葉県(勝浦のサンガ焼き好きです。) >>>response = requests.get(BASE_API_END_POINT+TARGET_URL, headers=headers, params=payload) >>>response.text '{"message":null,"result":{"prefCode":12,"prefName":"千葉県","cityCode":"","cityName":"","sicName":"","sicCode":"","simcName":"","simcCode":"","data":[{"year":2009,"value":2118886},{"year":2012,"value":2042622},{"year":2014,"value":2103767}]}}'
例によってこのままだとresponse.textが巨大な文字列の状態なので参照不可能なので、辞書型データに変換します。
>>>import json >>>dict = json.loads(response.text) >>>dict {'message': None, 'result': {'cityCode': '', 'cityName': '', 'data': [{'value': 2118886, 'year': 2009}, {'value': 2042622, 'year': 2012}, {'value': 2103767, 'year': 2014}], 'prefCode': 12, 'prefName': '千葉県', 'sicCode': '', 'sicName': '', 'simcCode': '', 'simcName': ''}}
綺麗なjsonになりました。ここから従業員数と年数を抜き出しましょう。
>>>for i in range(3): print(dict["result"]["prefName"],dict["result"]["data"][i]["year"],",",dict["result"]["data"][i]["value"]) 千葉県 2009 , 2118886 千葉県 2012 , 2042622 千葉県 2014 , 2103767
これをcsvに落とし込むだけです。あと一息。csvというそのまんまの名前のモジュールを使います。
import csv csv_name = "RESAS_data.csv" with open(csv_name, "w", newline="") as f: writer = csv.writer(f) writer.writerow(["area_name", "year", "number"]) for i in range(3): writer.writerow(["{}".format(dict["result"]["prefName"]), "{}".format(dict["result"]["data"][i]["year"]), "{}".format(dict["result"]["data"][i]["value"])]) print("csvに記入完了") csvに記入完了 #こうやって作業毎にprint書いとくと、安心できますね。
できたものはMacで見るとこんな感じ