見出し画像

【Python】【経済指標】米国と日本のGDPに関するデータを取得して描画する

GDP(Gross Domestic Product)は、日本語では「国内総生産」と訳されます。GDPは一定期間(通常は1年)におけるある国の経済活動全体の総生産価値を示す指標です。GDPは国内で生産された財やサービスの総額を金銭的な価値で計測し、経済の規模や成長率を評価するために用いられます。

GDPは、総額を見ることによって各国の経済規模を比較できるのと、前年同期比の伸び率を見ることによって、その国の経済がどのくらいのスピードで伸びているのか、あるいは縮小しているのかを判断する材料になります。

ただし、GDPの数字は、速報性に欠ける面があるので、マーケットで株式を売買するにあたって、判断材料にするような経済指標ではないようです。たとえば1~3月期の数字は4月に、4~6月期の数字は7月に公表されるため、景気に対しては遅行指数になります。つまり、GDPでは景気の先行きを予測することはできず、あくまでも現状確認に留まります

ただし、景気の転換点においては注目されます。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ヶ月前と比較 

名目GDP(米国)
GDP:Gross Domestic Product (Quarterly
Gross Domestic Product (GDP) | FRED | St. Louis Fed (stlouisfed.org)

実質GDP(米国)
GDPC1:Real Gross Domestic Product (Quarterly
Real Gross Domestic Product (GDPC1) | FRED | St. Louis Fed (stlouisfed.org)

名目GDP(日本)
JPNNGDP:Gross Domestic Product for Japan (Quarterly)
Gross Domestic Product for Japan (JPNNGDP) | FRED | St. Louis Fed (stlouisfed.org)

実質GDP(日本)
JPNRGDPEXP:Real Gross Domestic Product for Japan (Quarterly)
Real Gross Domestic Product for Japan (JPNRGDPEXP) | FRED | St. Louis Fed (stlouisfed.org)

FRED



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を用いてデータの可視化する方法を学びました。今後は、他の経済指標のデータ取得や他の経済指標と合わせた分析を行っていきたいと思います。



この記事が気に入ったらサポートをしてみませんか?