【Python】【経済指標】米国と日本のGDPに関するデータを取得して描画する
GDP(Gross Domestic Product)は、日本語では「国内総生産」と訳されます。GDPは一定期間(通常は1年)におけるある国の経済活動全体の総生産価値を示す指標です。GDPは国内で生産された財やサービスの総額を金銭的な価値で計測し、経済の規模や成長率を評価するために用いられます。
ここでは、米国と日本のGDPに関するデータを取得し描画していきます。
なお、最低限のポイントのみの説明にするため、Pythonライブラリ、モジュール等のインストール方法については割愛させて頂きます。お使いのPC環境等に合わせてインストールしてもらえればと思います。
1.米国と日本のGDPデータを取得する
米国や日本のGDPに関するデータを分析するには、pandasのDataFrameオブジェクトにデータを用意する必要があります。ここでは、米国と日本の「名目GDP」と「実質GDP」のデータをFREDから取得していきます。FREDは米国のセントルイス連銀が運営するサイトで一般的には十分な世界中の公的な経済データが手に入ります。データの取得期間は、2018年1月1日から現在の日付までです。
ここで、名目GDPとは、そのままの金額で算出したGDPになります。しかし、貨幣の価値も毎年変化するため、他の年のGDPと比較する時に、名目GDPのみでは正確な成長率が分かりません。そこで、対象となる期間のGDPを同じ時期の貨幣価値に変換することで正確な成長率の測定ができるようになります。これが実質GDPです。したがって、貨幣価値の変動を考慮せず、名目GDPで経済成長を測ってしまうと、実際はマイナスは成長率なのにプラスの成長率が算出されてしまいます。なので1年間のGDPの値を他国と比較する場合は名目GDPを、過去と比べてどのくらい成長しているかを正確に知りたい場合は実質GDPを見る必要があります。
import pandas_datareader.data as web
import datetime
# 2018/1/1から現在まで
start = '2018-01-01'
end = datetime.date.today()
# GDP(US)
df_gdp_us = web.DataReader(["GDP","GDPC1"], "fred", start, end)
df_gdp_us = df_gdp_us.dropna() # 空データ削除
# df_gdp_us = df_gdp_us.pct_change(4)*100 #4ヶ月前と比較
# GDP(JP)
df_gdp_jp = web.DataReader(["JPNNGDP","JPNRGDPEXP"], "fred", start, end)
df_gdp_jp = df_gdp_jp.dropna() # 空データ削除
# df_gdp_jp = df_gdp_jp.pct_change(4)*100 #4ヶ月前と比較
2.グラフの描画
ここでは、plotlyを使って、名目GDP(米国)、実質GDP(米国)、名目GDP(日本)、実質GDP(日本)の変化をグラフに表示していきます。plotlyについては、以前に描画方法と見た目に関わる設定について投稿しているので参考にしてもらえればと思います。
●plotlyでグラフを描画
import plotly.graph_objects as go # グラフ表示関連ライブラリ
import plotly.io as pio # 入出力関連ライブラリ
pio.renderers.default = 'iframe'
# subplot
from plotly.subplots import make_subplots
# グラフの実体となる trace オブジェクトを生成
gdp_us_trace = go.Scatter(
x=df_gdp_us.index,
y=df_gdp_us['GDP'],
mode='lines',
line={'color':'red', 'width':4},
name='米国GDP'
)
gdp_us_real_trace = go.Scatter(
x=df_gdp_us.index,
y=df_gdp_us['GDPC1'],
mode='lines',
line={'color':'red', 'width':4, 'dash':'dash'},
name='米国実質GDP'
)
gdp_jp_trace = go.Scatter(
x=df_gdp_jp.index,
y=df_gdp_jp['JPNNGDP'],
mode='lines',
line={'color':'blue', 'width':4},
name='日本GDP'
)
gdp_jp_real_trace = go.Scatter(
x=df_gdp_jp.index,
y=df_gdp_jp['JPNRGDPEXP'],
mode='lines',
line={'color':'blue', 'width':4, 'dash':'dash'},
name='日本実質GDP'
)
subplots_fig = make_subplots(
rows=2,
cols=1,
start_cell='top-left',
subplot_titles=[
'米国GDP',
'日本GDP',
],
horizontal_spacing=0.15,
vertical_spacing=0.10,
)
# 描画領域である figure オブジェクトの作成
subplots_fig.add_trace(gdp_us_trace, row=1, col=1)
subplots_fig.add_trace(gdp_us_real_trace, row=1, col=1)
subplots_fig.add_trace(gdp_jp_trace, row=2, col=1)
subplots_fig.add_trace(gdp_jp_real_trace, row=2, col=1)
# レイアウトの更新
subplots_fig.update_layout(
# 凡例は表示
showlegend=True,
# 幅と高さの設定
width=900,height=900,
title='経済指標(GDP)',
plot_bgcolor='white', # 背景色を白に設定
),
# 軸の設定
subplots_fig.update_yaxes(title='Billions of Dollars', row=1, col=1)
subplots_fig.update_yaxes(title='Billions of Yen', row=2, col=1)
# linecolorを設定して、ラインをミラーリング(mirror=True)して枠にする
subplots_fig.update_xaxes(linecolor='black', linewidth=1, mirror=True, row=1, col=1)
subplots_fig.update_yaxes(linecolor='black', linewidth=1, mirror=True, row=1, col=1)
subplots_fig.update_xaxes(linecolor='black', linewidth=1, mirror=True, row=2, col=1)
subplots_fig.update_yaxes(linecolor='black', linewidth=1, mirror=True, row=2, col=1)
# ticks='inside':目盛り内側, tickcolor:目盛りの色, tickwidth:目盛りの幅、ticklen:目盛りの長さ
subplots_fig.update_xaxes(ticks='inside', tickcolor='black', tickwidth=1, ticklen=5, row=1, col=1)
subplots_fig.update_yaxes(ticks='inside', tickcolor='black', tickwidth=1, ticklen=5, row=1, col=1)
subplots_fig.update_xaxes(ticks='inside', tickcolor='black', tickwidth=1, ticklen=5, row=2, col=1)
subplots_fig.update_yaxes(ticks='inside', tickcolor='black', tickwidth=1, ticklen=5, row=2, col=1)
# gridcolor:グリッドの色, gridwidth:グリッドの幅、griddash='dot':破線
subplots_fig.update_xaxes(gridcolor='lightgrey', gridwidth=1, griddash='dot', row=1, col=1)
subplots_fig.update_yaxes(gridcolor='lightgrey', gridwidth=1, griddash='dot', row=1, col=1)
subplots_fig.update_xaxes(gridcolor='lightgrey', gridwidth=1, griddash='dot', row=2, col=1)
subplots_fig.update_yaxes(gridcolor='lightgrey', gridwidth=1, griddash='dot', row=2, col=1)
# tick0:初期軸目盛り, dtick:軸目盛り間隔
subplots_fig.update_xaxes(dtick='M6') # 6カ月ごと
# 軸の文字サイズ変更
subplots_fig.update_xaxes(tickfont=dict(size=14, color='grey'))
subplots_fig.update_yaxes(tickfont=dict(size=16, color='grey'))
# show()メソッドでグラフを描画
subplots_fig.show()
今回は、経済の規模や成長率を評価するうえで参考になる米国と日本のGDPに関するデータを取得して、plotlyを用いてデータの可視化する方法を学びました。今後は、他の経済指標のデータ取得や他の経済指標と合わせた分析を行っていきたいと思います。