명목, 실질 GDP 시각화 및 분석

2 minute read

- 분석 목적:

2016년 2분기부터 2021년 1분기 까지 실질 및 명목 GDP의 트렌드, 순환성을 분석하고 앞으로 어떻게 될 지를 예상해 본다.

- GDP(Gross Domestic Product)란

한 나라에서 가계, 정부, 기업 등의 경제주체가 일정기간 동안에 생산한 재화 및 서비스의 부가가치를 의미한다. 명목은 물가가 반영되지 않은 것이고 실질은 물가가 반영된 값이라고 볼 수 있다. 또한 계절성이 존재하는 자료이기 때문에 원자료와 계절조정으로 나눌 수 있다. 본 분석에서는 계절조정된 자료만을 사용하였다.

import pandas as pd
import numpy as np
import plotly.graph_objects as go
import plotly
nomial_gdp= pd.read_csv("./GDP_계절조정_명목.csv",encoding="euckr")
real_gdp = pd.read_csv("./GDP_계절조정_실질.csv",encoding="euckr")
real_columns= real_gdp.transpose()[:1].values
nomial_columns = nomial_gdp.transpose()[:1].values
real_gdp2 = real_gdp.transpose()[1:]
nomial_gdp2 = nomial_gdp.transpose()[1:]
real_gdp2.columns = real_columns[0]
nomial_gdp2.columns = nomial_columns[0]
for c in real_columns[0]:
    real_gdp2[c] = [np.float32(x.replace(",","")) for x in real_gdp2[c]]
    nomial_gdp2[c] = [np.float32(x.replace(",","")) for x in nomial_gdp2[c]]
nomial_gdp2= nomial_gdp2.reset_index()
nomial_gdp2.columns =['날짜', '농림어업', '광업', '제조업', '전기, 가스 및 수도사업', '건설업', '서비스업',
       '국내총생산(시장가격, GDP)']
nomial_gdp2.날짜= [str(x).replace(" ","Q") for x in nomial_gdp2.날짜]
real_gdp2 = real_gdp2.reset_index()
real_gdp2.columns =['날짜', '농림어업', '광업', '제조업', '전기, 가스 및 수도사업', '건설업', '서비스업',
       '국내총생산(시장가격, GDP)']
real_gdp2.날짜 = [str(x).replace(" ","Q") for x in real_gdp2.날짜]
real_gdp2
날짜 농림어업 광업 제조업 전기, 가스 및 수도사업 건설업 서비스업 국내총생산(시장가격, GDP)
0 2016Q2 7767.299805 555.900024 113274.898438 10121.099609 21945.300781 236862.296875 426230.00000
1 2016Q3 7807.600098 626.400024 112531.500000 10366.500000 22810.199219 238198.796875 428335.68750
2 2016Q4 7792.399902 560.200012 114227.296875 10375.400391 23067.699219 238793.500000 430914.81250
3 2017Q1 7716.700195 586.299988 116367.796875 10776.599609 23662.900391 239817.500000 435062.09375
4 2017Q2 8065.000000 575.400024 116086.101562 10906.099609 23509.699219 242170.796875 437982.59375
5 2017Q3 8138.100098 557.799988 118955.601562 11138.700195 23792.500000 244907.593750 444474.00000
6 2017Q4 8140.000000 485.000000 116660.796875 10992.500000 23403.300781 246210.406250 443292.81250
7 2018Q1 8175.399902 530.799988 118244.296875 10490.700195 23793.699219 249871.703125 448384.09375
8 2018Q2 8079.399902 511.200012 119948.203125 10650.299805 23197.000000 251464.593750 451225.09375
9 2018Q3 7839.299805 496.200012 122121.101562 10851.700195 22437.000000 253438.796875 454330.81250
10 2018Q4 8015.100098 503.299988 123216.601562 11089.799805 22313.199219 255647.593750 458065.40625
11 2019Q1 8583.599609 472.899994 120108.000000 11287.500000 22099.400391 257260.296875 457150.68750
12 2019Q2 8273.299805 472.100006 120933.398438 11894.299805 22680.300781 260198.406250 461932.59375
13 2019Q3 8312.900391 468.600006 122912.898438 10597.599609 21990.300781 261925.093750 463803.59375
14 2019Q4 8203.099609 502.100006 124980.398438 11148.200195 22595.500000 265169.812500 469779.50000
15 2020Q1 8481.200195 481.500000 124808.203125 11879.200195 22646.500000 258460.500000 463853.18750
16 2020Q2 7748.600098 458.600006 113051.601562 11696.099609 22386.699219 256393.593750 449238.40625
17 2020Q3 7747.200195 460.700012 121512.703125 11392.900391 21379.400391 258974.796875 459271.81250
18 2020Q4 8077.299805 510.700012 125276.296875 11842.700195 21675.800781 260445.703125 464517.68750
19 2021Q1 8680.099609 461.500000 130075.500000 12541.799805 21866.599609 262248.000000 472602.18750

- 수치로만 봤을 때 다음과 같이 구분할 수 있겠다.

하락세: 광업, 건설업 등

상승세: 농림어업, 제조업, 전기가스 수도사업, 서비스업

GDP는 지속적으로 증가하는 것이 특징이 있다는 것을 수치로 확인할 수 있다.

시각화로 조금 더 확실하게 분석해보면 다음과 같다.

fig= go.Figure(layout=dict(title=dict(text="명목 GDP 및 구성요소들 MINMAX SCALE")))
fig.add_trace(go.Line(x=nomial_gdp2.날짜,y=((nomial_gdp2['농림어업']-np.min(nomial_gdp2['농림어업']))/(np.max(nomial_gdp2['농림어업'])-np.min(nomial_gdp2['농림어업']))),name="농림어업"))
fig.add_trace(go.Line(x=nomial_gdp2.날짜,y=((nomial_gdp2['광업']-np.min(nomial_gdp2['광업']))/(np.max(nomial_gdp2['광업'])-np.min(nomial_gdp2['광업']))),name="광업"))
fig.add_trace(go.Line(x=nomial_gdp2.날짜,y=((nomial_gdp2['제조업']-np.min(nomial_gdp2['제조업']))/(np.max(nomial_gdp2['제조업'])-np.min(nomial_gdp2['제조업']))),name="제조업"))
fig.add_trace(go.Line(x=nomial_gdp2.날짜,y=((nomial_gdp2['전기, 가스 및 수도사업']-np.min(nomial_gdp2['전기, 가스 및 수도사업']))/(np.max(nomial_gdp2['전기, 가스 및 수도사업'])-np.min(nomial_gdp2['전기, 가스 및 수도사업']))),name="수도사업"))
fig.add_trace(go.Line(x=nomial_gdp2.날짜,y=((nomial_gdp2['건설업']-np.min(nomial_gdp2['건설업']))/(np.max(nomial_gdp2['건설업'])-np.min(nomial_gdp2['건설업']))),name="건설업"))
fig.add_trace(go.Line(x=nomial_gdp2.날짜,y=((nomial_gdp2['국내총생산(시장가격, GDP)']-np.min(nomial_gdp2['국내총생산(시장가격, GDP)']))/(np.max(nomial_gdp2['국내총생산(시장가격, GDP)'])-np.min(nomial_gdp2['국내총생산(시장가격, GDP)']))),name='GDP'))
fig= go.Figure(layout=dict(title=dict(text="실질 GDP 및 구성요소들 MINMAX SCALE")))
fig.add_trace(go.Line(x=real_gdp2.날짜,y=((real_gdp2['농림어업']-np.min(real_gdp2['농림어업']))/(np.max(real_gdp2['농림어업'])-np.min(real_gdp2['농림어업']))),name="농림어업"))
fig.add_trace(go.Line(x=real_gdp2.날짜,y=((real_gdp2['광업']-np.min(real_gdp2['광업']))/(np.max(real_gdp2['광업'])-np.min(real_gdp2['광업']))),name="광업"))
fig.add_trace(go.Line(x=real_gdp2.날짜,y=((real_gdp2['제조업']-np.min(real_gdp2['제조업']))/(np.max(real_gdp2['제조업'])-np.min(real_gdp2['제조업']))),name="제조업"))
fig.add_trace(go.Line(x=real_gdp2.날짜,y=((real_gdp2['전기, 가스 및 수도사업']-np.min(real_gdp2['전기, 가스 및 수도사업']))/(np.max(real_gdp2['전기, 가스 및 수도사업'])-np.min(real_gdp2['전기, 가스 및 수도사업']))),name="수도사업"))
fig.add_trace(go.Line(x=real_gdp2.날짜,y=((real_gdp2['건설업']-np.min(real_gdp2['건설업']))/(np.max(real_gdp2['건설업'])-np.min(real_gdp2['건설업']))),name="건설업"))
fig.add_trace(go.Line(x=real_gdp2.날짜,y=((real_gdp2['국내총생산(시장가격, GDP)']-np.min(real_gdp2['국내총생산(시장가격, GDP)']))/(np.max(real_gdp2['국내총생산(시장가격, GDP)'])-np.min(real_gdp2['국내총생산(시장가격, GDP)']))),name='GDP'))

건설업은 물가변동의 영향을 크게받아 명목GDP는 상승했지만 실질GDP에서의 하락이 있었음을 알 수 있었다.

다음은 실질 GDP만을 이용하여 분석을 진행. 과연 앞으로의 GDP 는 어떻게 될까?

fig= go.Figure(layout=dict(title=dict(text="실질 GDP")))
fig.add_trace(go.Line(x=real_gdp2.날짜,y=real_gdp2['국내총생산(시장가격, GDP)']))

다음과 같이 GDP는 오를 수 밖에 없다는 것을 알 수 있다. 보면 2020년 2분기에 큰 하락이 있었는데 코로나의 여파가 컸음을 알 수 있다.

GDP는 Trend성이 있기 때문에 순환성을 파악하기 위해서는 Trend를 제거해야 한다. 다양한 방법이 있지만 이 포스트에서는 전기대비, 전년동기대비를 한번 둘러볼 예정이다.

real_gdp2['전기GDP'] = real_gdp2['국내총생산(시장가격, GDP)'].shift(1)
real_gdp2['전년동기GDP'] = real_gdp2['국내총생산(시장가격, GDP)'].shift(4)
real_gdp2['전기대비 GDP 증가율'] =(real_gdp2['국내총생산(시장가격, GDP)'] - real_gdp2['전기GDP'])/real_gdp2['전기GDP']
real_gdp2['전년동기대비 GDP 증가율'] = (real_gdp2['국내총생산(시장가격, GDP)'] - real_gdp2['전년동기GDP'])/real_gdp2['전년동기GDP']
fig= go.Figure(layout=dict(title=dict(text="실질 GDP 증가율")))
fig.add_trace(go.Line(x=real_gdp2.날짜,y=real_gdp2['전기대비 GDP 증가율'],name = '전기대비 GDP 증가율'))
fig.add_trace(go.Line(x=real_gdp2.날짜,y=real_gdp2['전년동기대비 GDP 증가율'],name = '전년동기대비 GDP 증가율'))

확실히 코로나의 여파로 GDP는 2분기에 많은 타격을 받았다. 반동이 큰 만큼 급격한 상승을 보여주고 있어 경기가 과열되는 것이 아닌지 걱정이 되는 그래프이기도 하다. 경계할 필요가 있긴 하겠다.

Leave a comment