はじめに
株式投資を始めたことがきっかけで世界的な経済や金融に興味をもつようになりました。
前回はQuandlというサイトから各国のインフレ率を取得し表示してみるということをしました。
Quandlではインフレ率以外にもさまざまな経済指標をWebAPIで取得することができます。
今回は個人的な研究で消費者物価指数(CPI)の騰落率が欲しかったのでQuandlでデータを取得しpandasでその騰落率を計算してみました。
実行環境
- Windows バージョン20H2
- Python 3.9.4
- jupyterlab 3.0.16
- Quandl 3.6.1
- pandas 1.2.5
コードと説明
ライブラリのインポート
import quandl
import pandas as pd
インポートするモジュールは前回とほぼ同じですが今回はグラフをファイル出力しませんのでmatplotlibをインポートしていません。
コンフィグ
apikey = 'XXXXXXXX'
datatype = {'USA':'RATEINF/CPI_USA',
'Japan':'RATEINF/CPI_JPN'}
APIKeyは前回と同じです。アカウント登録時に提供されたものに置き換えてください。今回はアメリカと日本のデータのみが欲しかったためdatatypeは2国のみ定義しています。
また前回はインフレ率の取得でしたのでシンボルは'RATEINF/INFLATION_XXX'でしたが今回は'RATEINF/CPI_XXX'を指定している点がポイントです。
詳しく知りたい方はRATEINF Infration RatesのAPIのドキュメントを参照してください。
データ取得と整形と出力
# データ取得関数
def getdata(dtype):
data = quandl.get(dtype, column_index = '1')
return data
# APIキーのセット
quandl.ApiConfig.api_key = apikey
# データ取得
for dk in datatype.keys():
# データ取得
tempdata = getdata(datatype[dk])
tempdata.rename(columns = {'Value':dk + '_value'}, inplace = True)
# NaNの穴埋め
tempdata = tempdata.fillna(method = 'ffill')
# 騰落率の計算
tempdata['tempval'] = tempdata.pct_change()
tempdata['RoR'] = tempdata['tempval'] * 100
tempdata = tempdata.drop(columns = 'tempval')
# CSVの出力
tempdata.to_csv('CPI_' + dk + '.csv')
今回はquandl.get(~)で期間を指定していない点やグラフ出力のために表を1つにまとめていないなど前回よりも構造はかなりシンプルです。
ポイントとしては騰落率の計算です。騰落率の計算式はこちらのサイトを参考にさせていただきました。以下の通りです。
騰落率(%) = {(基準日の値 / 前回の値) - 1} * 100
pandasのpct_change関数を用いることで{(基準日の値 / 前回の値) - 1}までの計算が行われるため次の行でpct_changeの結果に対し100をかけていることがコードからわかるかと思います。
出力されるファイル例
さいごに
いかがでしたでしょうか。Pythonではpandasなどデータを扱う強力なライブラリが多数ありまたそれに合ったデータを提供してくれているところなども様々ありデータ分析が非常にやりやすく楽しいですね。
また何か気になることがあれば投稿します。それではまた。