몇몇 정부의 지출 구조

어제 글에서 언급한 Government expenditure by function 을 OECD Stats 에서 다운로드 받아 보았다.

이것을 왜 보고 싶었냐면, 선진국을 어떻게 정의할 수 있을지 검색해보다가 “선진국이라고 다 같은 선진국이냐?” 하는 생각이 들어서이다. 어쨌거나 경제적 발달 정도를 기초로 하여 뽑은 선진국 13개는 아래와 같았는데 (순서는 무작위)

Canada
United States
Korea
Italy
Iceland
France
United Kingdom
Sweden
Germany
Denmark
Japan
New Zealand
Norway

미국과 노르웨이에 대해 사람들이 생각하는 이미지는 많이 다르다. 어떤 차이가 있을까? 우리가 그렇게 닮고(따라가고) 싶어하는 다른 선진국들의 모습은 무엇일까? 혹은 우리는 선진국이라 불리는 나라들 중 어떤 나라와 많이 닮아 있을까? 를 한번 확인해보고 싶었다.

그래서 각 나라의 정부 지출을 분야별로 뽑아서 Pie chart 를 그려보려 한다. 그래프의 생김새에 패턴이 있지 않을까 해서다.

In [1]:
import seaborn  # 일단 조금이라도 예쁜 그래프를 위해서
In [2]:
import pandas as pd
from StringIO import StringIO
import requests

# 2008~2013 까지 모두 다운로드 받았는데, 2013는 데이터가 별로 없다. 2012년 데이터를 가지고 그려보자.
df = pd.read_csv(StringIO(requests.get('https://dl.dropboxusercontent.com/u/69528091/data/SNA_TABLE11_2012.csv').content))

데이터의 앞쪽에 뭐가 들어있나 한번 보자.

In [3]:
df.head()
Out[3]:
”LOCATION Country TRANSACT Transaction ACTIVITY Function SECTOR Sector MEASURE Measure Year Unit Code Unit PowerCode Code PowerCode Reference Period Code Reference Period Value Flag Codes Flags
0 CHL Chile P3CG Final consumption expenditure 010 General public services GS13 General government C Current prices 2012 CLP Chilean Peso 6 millions NaN NaN 1598592 NaN NaN
1 CHL Chile P3CG Final consumption expenditure 020 Defence GS13 General government C Current prices 2012 CLP Chilean Peso 6 millions NaN NaN 1459404 NaN NaN
2 CHL Chile P3CG Final consumption expenditure 030 Public order and safety GS13 General government C Current prices 2012 CLP Chilean Peso 6 millions NaN NaN 1832380 NaN NaN
3 CHL Chile P3CG Final consumption expenditure 040 Economic affairs GS13 General government C Current prices 2012 CLP Chilean Peso 6 millions NaN NaN 544166 NaN NaN
4 CHL Chile P3CG Final consumption expenditure 050 Environment protection GS13 General government C Current prices 2012 CLP Chilean Peso 6 millions NaN NaN 92110 NaN NaN

5 rows × 21 columns

컬럼이 21개나 된다. 내가 관심있는 것은, “나라 이름”, “분야”, “쓴돈” 이다. 일단 컬럼 이름을 확인해보자.

In [11]:
print('\n'.join(df.columns))
"LOCATION"
Country
TRANSACT
Transaction
ACTIVITY
Function
SECTOR
Sector
MEASURE
Measure
TIME
Year
Unit Code
Unit
PowerCode Code
PowerCode
Reference Period Code
Reference Period
Value
Flag Codes
Flags

  • 나라이름: Country
  • 분야: Function
  • 쓴돈: Value

데이터를 뽑아내기 전에 고려할 사항이 몇 가지 있다.

  • 분야: Function 은 하위 분류를 가지고 있다. 하위 분류가 상세하게 들어 있는 나라도 있고(Norway), 없는 나라도(Korea, United States) 있다. 그래프에 항목이 너무 많으면 보기 힘들기 때문에 상위 항목만 사용한다. 항목 분류는 여기 에서 확인할 수 있다. ACTIVITY 가 3자리인 경우만 사용했다.
  • 쓴돈: 어차피 비율 그래프라 단위는 무시해도 된다. 다만, Function에 Total function 이라는 항목이 있는데 이것은 당연히 버려야 한다.

이것을 고려하여 DataFrame 으로부터 필요한 데이터만 가지고 Pivot 한 테이블을 생성하는 함수를 작성하자.

In [5]:
def spent_by_function(df, country):
    target = df[df.Country==country]
    spent_by_function = target[(target.Function!='Total function') & (target.ACTIVITY.str.len()==3)].pivot_table("Value", index="Function", aggfunc="sum")
    return spent_by_function

뽑아두었던 선진국 목록 중에 이 데이터에 들어있는 나라들이 뭐가 있나 확인한다.

In [12]:
print('\n'.join(set(df.Country)))
Israel
Korea
Estonia
United States
Chile
Japan
Norway
Russia

어라? 정보가 있는 나라가 별로 없네 … 일단 있는것만 가지고 해 본다. 4개 나라가 대상이다.

In [7]:
countries = ['Japan', 'Norway', 'United States', 'Korea']
In [9]:
for country in countries:
    d = spent_by_function(df, country)
    figure()
    d.plot(kind='pie', figsize=(8,8), labels=d.keys(), label='', autopct="%.2f%%", title="Government expenditure: %s 2012" % country, fontsize=8)

일단 보고 싶었던 것은 만들었다.

위에 링크를 건 항목 설명을 참고해서 뭐가 비슷하고 뭐가 다른지 대강만 훑어보자.

  • Helath: 4개 나라 모두 공통적으로 20% 약간 안되는 지출을 하고 있다.
  • Economic affairs: 우리 나라만 20%를 넘는다. 다른 세 나라는 모두 10퍼센트 초반대이다. 이 분류의 소항목들은 아래와 같다.
      04.1 - General economic, commercial and labour affairs
      04.2 - Agriculture, forestry, fishing and hunting
      04.3 - Fuel and energy
      04.4 - Mining, manufacturing and construction
      04.5 - Transport
      04.6 - Communication
      04.7 - Other industries
      04.8 - R&D Economic affairs
      04.9 - Economic affairs n.e.c.
    
    아무래도 정부가 민간 경제쪽에 퍼주는 항목인 것 같은데 … 음…
  • Defence: 역시 천조국 (!!). 우리나라도 휴전국가라서 국방비가 높은 편이다. 사실 이건 비율만으론 알기 힘들고 실제 액수와 영토의 크기 등도 같이 고려해야 맞을듯.
  • Social protection: 그냥 딱 보기에 가장 큰 차이가 나는 항목이다. 일본/노르웨이는 둘다 30% 이상, 미국/한국은 그 절반 이하. 소항목을 보면,
      10.1 - Sickness and disability
      10.2 - Old age
      10.3 - Survivors
      10.4 - Family and children
      10.5 - Unemployment
      10.6 - Housing
      10.7 - Social exclusion n.e.c.
      10.8 - R&D Social protection
      10.9 - Social protection n.e.c.
    
    미국/노르웨이의 차이만 보면 뭔가 우리가 평소 듣던 것과 얼추 맞는 것 같긴 하다. 하지만 이것 만으로 일반화를 하기엔 좀 성급한 감이 있다. 지출 총액과 인구수까지 들고 와서 좀 더 상세히 이것저것을 보면 좋겠지만 귀찮 …

이것만 보고 우리나라와 미국이 닮았고, 일본과 노르웨이가 닮았다고 말할 수 있을까? 좀 더 많은 나라의 데이터를 모은 다음에 지출 비율 벡터를 피처로 사용해서 클러스터링을 해보고 싶은데 데이터 구하기가 힘들다. :’(

피곤하고 졸리니 오늘은 여기까지.

Comments