- import requests, json
- import pandas as pd
- import re
- import matplotlib.pyplot as plt
- import seaborn as sns
- %matplotlib inline
-
- # APIキーの指定
- apikey = "oooooooooooooooooooooooooooooooooooooooooooooooooo" # 各自取得したAPIキーに置き換え
-
- # APIのURL設定
- api = "http://api.e-stat.go.jp/rest/2.1/app/json/getStatsData?appId={key}&lang=J&statsDataId=0003286300&metaGetFlg=Y&cntGetFlg=N§ionHeaderFlg=1"
- url = api.format(key = apikey)
-
- # APIにリクエスト
- r = requests.get(url)
- # JSON形式からデコード
- data = json.loads(r.text)
-
- # コード・デコード値取得
- class_data = data["GET_STATS_DATA"]["STATISTICAL_DATA"]["CLASS_INF"]["CLASS_OBJ"]
- df1 = pd.DataFrame(class_data[1]["CLASS"]) # cat01 年度
- df2 = pd.DataFrame(class_data[2]["CLASS"]) # cat02 病床規模
- df3 = pd.DataFrame(class_data[3]["CLASS"]) # cat03 データ種類
-
- # データ取得
- x_data = []
- y_data = []
-
- for value in data["GET_STATS_DATA"]["STATISTICAL_DATA"]["DATA_INF"]["VALUE"]:
- if value["@cat02"] == "1" and value["@cat03"] == "100": # cat02 総数 cat03 総数(病院数)
- x_data.append(value["@cat01"]) # cat01 年度
- y_data.append(value["$"]) # 値
-
- # cat01 デコード(西暦の年度抽出)
- x_label = []
- year = re.compile(r'\d\d\d\d') # 正規表現で西暦抽出
-
- for xlabel in x_data:
- labeldata = df1[df1['@code'] == xlabel]
- x_year = year.search(labeldata['@name'].to_string())
- x_label.append(int(x_year.group()))
-
- # グラフ表示
- plt.plot(x_label, y_data)
これを実行すると、下記のようなグラフが表示される。
今年度は、暇を見つけて、プログラムを出していこうかと・・・。