皆さん、こんにちは!本記事では、国土交通省が提供する不動産情報ライブラリのAPIを使用して、指定の鉄道駅ごとの乗車人数データを取得し、Pythonを用いてそのデータをグラフで視覚化する方法を紹介します。
APIを用いたデータ取得の流れ、特にXYZタイル方式についても解説し、最終的にデータをExcelに保存しつつ、年次ごとの乗車人数の推移を美しく視覚化する手法を取り上げます。
この記事はプログラムの解説に加え、XYZタイル方式についての基礎知識を知りたい方、Pythonでのデータ可視化に興味のある方にも役立つ内容です。
1. 不動産情報ライブラリAPIについて
国土交通省が提供する不動産情報ライブラリ(ReinfoLib)APIでは、全国の不動産に関連する多様なデータにアクセスすることができます。鉄道駅ごとの乗車人数データも取得可能で、路線や駅単位で人流を分析する際に非常に有用です。今回使用するのは、駅別乗車人数を取得するAPIであり、指定した座標(XYZタイル形式)に基づいたデータが返ってきます。
必要なAPIキーの取得方法
不動産情報ライブラリAPIを利用するには、APIキーが必要です。公式ウェブサイトにて登録し、APIキーを取得しましょう。
2. XYZタイル方式とは?
XYZタイル方式は、地図を小さな正方形のタイルに分割し、ズームレベル、X座標、Y座標で特定の地理情報を取得する手法です。座標を調べる際には、XYZタイル座標チェックツールを活用します。
このように特定の地域の座標が表示されますので任意の座標に変えてみてください。
3. プログラムの概要
このプログラムは、次のようなステップで動作します。
- APIリクエストの送信 – 駅別乗車人数データをAPIを通して取得。
- データの整形 – JSON形式で取得したデータを整形し、Pandas DataFrameで扱いやすくする。
- データのExcelへの保存 – データをExcelファイルに出力。
- グラフで視覚化 – Matplotlibを用いて乗車人数の推移をグラフ化し、視覚的な分析を可能にする。
4. コードの詳細解説
以下のコードはPythonを用いてAPIからデータを取得し、視覚化するものです。まず、以下のライブラリをインストールしてください。
pip install requests pandas openpyxl matplotlib
5. データ取得の仕組み
プログラムは、APIリクエストを送信し、座標に基づいて指定された鉄道駅の情報を取得します。リクエストパラメータにz
, x
, y
を指定し、返却されたJSONデータから各駅の乗車人数データを取り出します。
import requests
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# APIキーの設定
API_KEY = '***' # ご自身のAPIキーに置き換えてください
url = 'https://www.reinfolib.mlit.go.jp/ex-api/external/XKT015'
# リクエストパラメータ設定(XYZ座標と取得形式を指定)
headers = {"Ocp-Apim-Subscription-Key": API_KEY}
params = {
'response_format': 'geojson',
'z': 15,
'x': 28718,
'y': 13018
}
# APIリクエストの送信と応答の取得
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
geojson_data = response.json()
print("データ取得成功:", geojson_data)
else:
print(f"Error: {response.status_code}, Message: {response.text}")
6. データのExcelへの保存
PythonのPandasを使って、取得したデータをDataFrameに変換し、Excelファイルとして出力します。これにより、取得データをExcelでさらに分析できます。
# データの解析
features = geojson_data['features']
data_list = []
for feature in features:
properties = feature['properties']
row = {
'駅名': properties['S12_001_ja'],
'路線名': properties['S12_003_ja'],
'運営会社': properties['S12_002_ja'],
}
for year in range(2011, 2023):
key = f'S12_{str(9 + 4 * (year - 2011)).zfill(3)}' # 年ごとの乗車人数キー
row[f'乗降客数 ({year})'] = properties.get(key, 0)
data_list.append(row)
# データフレームに変換
df = pd.DataFrame(data_list)
df.to_excel("駅別乗車人数.xlsx", index=False)
print("Excelファイルに保存しました。")
XYZで指定した範囲の駅の必要な情報を抽出してエクセル出力します。
7. グラフで視覚化
Matplotlibを使用して、年度ごとの駅ごとの乗車人数を棒グラフで表現します。フォントはIPAexGフォントを指定し、日本語の表示にも対応しています。
グラフは、年度別に色分けされた乗車人数の推移を視覚的に把握できるように構成されています。
# 日本語フォントの設定
font_path = '/System/Library/Fonts/ipaexg.ttf' # IPAexGのパスを指定してください
prop = FontProperties(fname=font_path)
# グラフ作成
plt.figure(figsize=(12, 8))
for idx, row in df.iterrows():
years = list(range(2011, 2023))
values = [row[f'乗降客数 ({year})'] for year in years]
plt.plot(years, values, label=row['駅名'] + ' (' + row['路線名'] + ')')
plt.xlabel("年度", fontproperties=prop)
plt.ylabel("乗降客数(千人単位)", fontproperties=prop)
plt.title("駅別乗降人数推移", fontproperties=prop)
plt.xticks(years, fontproperties=prop)
plt.legend(prop=prop)
plt.grid()
plt.tight_layout()
plt.show()
駅の乗車人数の推移がわかります。画像を保存する場合はplt.show()の代わりにplt.savefit(“img.png”)に変更してください。
8. まとめ
不動産情報ライブラリのAPIを使って、鉄道駅の乗車人数をPythonで取得し、データをExcelに保存しながら視覚化する手法について解説しました。XYZタイル方式を用いたAPIの活用は、地理情報を分析する上で非常に便利です。本記事を参考に、ぜひデータ分析に挑戦してみてください。
コメント