1. wbdata とは何か
1.1 ライブラリ概要
wbdata は、World Bank の各種データベース(World Development Indicators、Doing Business、Human Capital Index など)に対する Python インターフェースですdatahelpdesk.worldbank.org。
- メタデータ(指標名や説明)の検索
- 指標データの取得(DataFrame/Series 形式)
- 日付指定(年・四半期)や国・地域フィルタ
- キャッシュによる高速化
といった機能を備えており、数行のコードで膨大な経済データを扱えますGitHub。
1.2 他パッケージとの比較
Python には他にも world_bank_data
や wbpy
、wbgapi
といったパッケージがありますが、wbdata は豊富なメタデータ検索機能とシンプルな API が特徴ですPyPIWorld Bank Blogs。
2. インストールと初期設定
2.1 インストール
pip install wbdata
これだけで最新の World Bank API v2 に対応したクライアントが利用可能になりますWBData。
2.2 必要ライブラリのインポート
import pandas as pd
import wbdata
import warnings
warnings.filterwarnings("ignore", category=UserWarning, module="wbdata")
pandas との連携が前提となるため、あらかじめ pandas のインストールも必要です。
3. 指標コードの検索と取得
3.1 指標コードを調べる
たとえば「GDP growth」に対応するコードは NY.GDP.MKTP.KD.ZG
です。
# キーワード検索例
indicators = wbdata.search_indicators("GDP growth")
print(indicators.head())
このように検索すると、対応するコードと日本語の説明が得られますjeremymikecz.com。
3.2 データの取得
取得したい指標と国を指定して DataFrame を生成します。
# 取得対象指標と名称の辞書
indicators = {
"NY.GDP.MKTP.KD.ZG": "GDP growth", # GDP 成長率
"FP.CPI.TOTL.ZG": "Inflation", # インフレ率
"SL.UEM.TOTL.ZS": "Unemployment rate" # 失業率
}
# 全ての国('all')のデータを取得
data = wbdata.get_dataframe(indicators, country="all", convert_date=True)
print(data.tail())
この例では年度を自動でインデックス化し、各国・各指標の時系列データをまとめて取得しますWBData。
4. 日付・国フィルタとキャッシュ設定
4.1 日付の絞り込み
# 2000年から2020年までのデータに限定
data = wbdata.get_dataframe(
indicators,
country="all",
data_date=(pd.datetime(2000, 1, 1), pd.datetime(2020, 12, 31))
)
日付は datetime
以外に文字列でも指定可能ですWBData。
4.2 キャッシュの活用
大量データ取得時の繰り返しリクエストを防ぎ、高速化できます。環境変数で TTL(有効期限)やキャッシュサイズを制御可能ですWBData。
export WBDATA_CACHE_PATH=~/.cache/wbdata
export WBDATA_CACHE_TTL=86400
5. pandas と機械学習への応用
5.1 データ整形
# 欠損値除去や横持ち→縦持ち変換など
cleaned = data.reset_index().dropna().pivot_table(
index="date", columns="indicator", values="value"
)
5.2 機械学習モデルへの入力
MetaTrader5 などで取得した価格データと結合し、CatBoost や scikit-learn で予測モデルを構築できます。たとえば以下のように組み合わせますMQL5。
import MetaTrader5 as mt5
from catboost import CatBoostRegressor
from sklearn.model_selection import train_test_split
# MT5 から価格データ取得
# ...(省略)
# 特徴量と結合
X = pd.concat([price_df, cleaned], axis=1).dropna()
y = X["target_price_shifted"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = CatBoostRegressor()
model.fit(X_train, y_train)
6. まとめと今後の展開
- wbdata を使えば、数千の世界銀行指標を簡潔に取得でき、pandas DataFrame として即座に分析に利用可能ですPyPI。
- キャッシュ機能や日付・国フィルタなど、実用的な機能も充実しており、大規模データの解析にも耐えますWBData。
- MetaTrader5 や CatBoost との組み合わせで、経済指標を取り入れたアルゴリズムトレードの構築が容易になりますMQL5。
今後は、リアルタイムデータのストリーミング取得や、機械学習モデルのハイパーパラメータ最適化との連携など、応用範囲がますます広がることでしょう。ぜひ本記事を参考に、世界銀行データを活用した次世代の経済予測ツールを開発してみてください。
オンラインコミュニティ
こちらのコミュニティで、AIや機械学習をトレードに活かすために日々探求しています。
興味のある方は覗いてみてください。
参考記事
