Python:日本の過去24年間の輸出品の伸び率をグラフ化

世界に冠たる輸出大国日本の過去24年の主要輸出品をグラフ化してみる。自動車が圧倒的に強いのは風の噂に聞いているが、それ以外の輸出品については特に気にしていなかったので、こういう機会に日本は何を輸出しているのかを知るのもいいのではないだろうか。

スポンサーリンク

24年間の年別・品別の輸出額をグラフ化

先ず、データをこのサイトからダウンロードしてくる。

import tabula

df = tabula.read_pdf("y6_1.pdf",
             output_format='dataframe',
             pages = '1',
             encoding='utf-8',
             java_options=None,
             pandas_options=None,
             multiple_tables=False)
df.head()
Unnamed: 0 1995年 1996年 1997年 1998年 1999年 2000年 2001年 2002年 2003年 2004年
0 順位 415,309 億円 447,313 億円 509,380 億円 506,450 億円 475,476 億円 516,542 億円 489,792 億円 521,090 億円 545,484 億円 611,700 億円
1 NaN +2.6% +7.7% +13.9% ▲0.6% ▲6.1% +8.6% ▲5.2% +6.4% +4.7% +12.1%
2 NaN 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車
3 1 49,797 億円 55,138 億円 71,123 億円 77,952 億円 70,948 億円 69,301 億円 72,108 億円 87,746 億円 88,950 億円 92,142 億円
4 NaN ▲14.7% (12.0%) +10.7% (12.3%) +29.0% (14.0%) +9.6% (15.4%) ▲9.0% (14.9%) ▲2.3% (13.4%) +4.1% (14.7%) +21.7% (16.8%) +1.4% (16.3%) +3.6% (15.1%)
for i, col in enumerate(df.columns):
    df.iloc[:, i] = df.iloc[:, i].str.replace(',', '')
df.dropna(thresh=3,inplace=True)
df.reset_index(drop=True, inplace=True)
df = df.drop(['Unnamed: 0'],axis=1)
df.head()
1995年 1996年 1997年 1998年 1999年 2000年 2001年 2002年 2003年 2004年
0 415309 億円 447313 億円 509380 億円 506450 億円 475476 億円 516542 億円 489792 億円 521090 億円 545484 億円 611700 億円
1 +2.6% +7.7% +13.9% ▲0.6% ▲6.1% +8.6% ▲5.2% +6.4% +4.7% +12.1%
2 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車
3 49797 億円 55138 億円 71123 億円 77952 億円 70948 億円 69301 億円 72108 億円 87746 億円 88950 億円 92142 億円
4 ▲14.7% (12.0%) +10.7% (12.3%) +29.0% (14.0%) +9.6% (15.4%) ▲9.0% (14.9%) ▲2.3% (13.4%) +4.1% (14.7%) +21.7% (16.8%) +1.4% (16.3%) +3.6% (15.1%)
df1 = tabula.read_pdf("y6_1.pdf",
             output_format='dataframe',
             pages = '2',
             encoding='utf-8',
             java_options=None,
             pandas_options=None,
             multiple_tables=False)

df1.head()
Unnamed: 0 2005年 2006年 2007年 2008年 2009年 2010年 2011年 2012年 2013年 2014年
0 順位 656,565 億円 752,462 億円 839,314 億円 810,181 億円 541,706 億円 673,996 億円 655,465 億円 637,476 億円 697,742 億円 730,930 億円
1 NaN +7.3% +14.6% +11.5% ▲3.5% ▲33.1% +24.4% ▲2.7% ▲2.7% +9.5% +4.8%
2 NaN 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車
3 1 99,288 億円 122,995 億円 143,170 億円 137,361 億円 66,933 億円 91,741 億円 82,042 億円 92,250 億円 104,125 億円 109,194 億円
4 NaN +7.8% (15.1%) +23.9% (16.3%) +16.4% (17.1%) ▲4.1% (17.0%) ▲51.3% (12.4%) +37.1% (13.6%) ▲10.6% (12.5%) +12.4% (14.5%) +12.9% (14.9%) +4.9% (14.9%)
for i, col in enumerate(df1.columns):
    df1.iloc[:, i] = df1.iloc[:, i].str.replace(',', '')
df1.dropna(thresh=3,inplace=True)
df1.reset_index(drop=True, inplace=True)
df1 = df1.drop(['Unnamed: 0'],axis=1)
df1.head()
2005年 2006年 2007年 2008年 2009年 2010年 2011年 2012年 2013年 2014年
0 656565 億円 752462 億円 839314 億円 810181 億円 541706 億円 673996 億円 655465 億円 637476 億円 697742 億円 730930 億円
1 +7.3% +14.6% +11.5% ▲3.5% ▲33.1% +24.4% ▲2.7% ▲2.7% +9.5% +4.8%
2 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車
3 99288 億円 122995 億円 143170 億円 137361 億円 66933 億円 91741 億円 82042 億円 92250 億円 104125 億円 109194 億円
4 +7.8% (15.1%) +23.9% (16.3%) +16.4% (17.1%) ▲4.1% (17.0%) ▲51.3% (12.4%) +37.1% (13.6%) ▲10.6% (12.5%) +12.4% (14.5%) +12.9% (14.9%) +4.9% (14.9%)
df2 = tabula.read_pdf("y6_1.pdf",
             output_format='dataframe',
             pages = '3',
             encoding='utf-8',
             java_options=None,
             pandas_options=None,
             multiple_tables=False)
df2.head()
Unnamed: 0 2015年 2016年 2017年 2018年
0 順位 756,139 億円 700,358 億円 782,865 億円 814,788 億円
1 NaN +3.4% ▲7.4% +11.8% +4.1%
2 NaN 自動車 自動車 自動車 自動車
3 1 120,463 億円 113,329 億円 118,254 億円 123,072 億円
4 NaN +10.3% (15.9%) ▲5.9% (16.2%) +4.3% (15.1%) +4.1% (15.1%)
for i, col in enumerate(df2.columns):
    df2.iloc[:, i] = df2.iloc[:, i].str.replace(',', '')
df2.dropna(thresh=3,inplace=True)
df2.reset_index(drop=True, inplace=True)
df2 = df2.drop(['Unnamed: 0'],axis=1)
df2.head()
2015年 2016年 2017年 2018年
0 756139 億円 700358 億円 782865 億円 814788 億円
1 +3.4% ▲7.4% +11.8% +4.1%
2 自動車 自動車 自動車 自動車
3 120463 億円 113329 億円 118254 億円 123072 億円
4 +10.3% (15.9%) ▲5.9% (16.2%) +4.3% (15.1%) +4.1% (15.1%)
import pandas as pd

df3 = pd.concat([df, df1, df2], axis=1)
df3.head()
1995年 1996年 1997年 1998年 1999年 2000年 2001年 2002年 2003年 2004年 2009年 2010年 2011年 2012年 2013年 2014年 2015年 2016年 2017年 2018年
0 415309 億円 447313 億円 509380 億円 506450 億円 475476 億円 516542 億円 489792 億円 521090 億円 545484 億円 611700 億円 541706 億円 673996 億円 655465 億円 637476 億円 697742 億円 730930 億円 756139 億円 700358 億円 782865 億円 814788 億円
1 +2.6% +7.7% +13.9% ▲0.6% ▲6.1% +8.6% ▲5.2% +6.4% +4.7% +12.1% ▲33.1% +24.4% ▲2.7% ▲2.7% +9.5% +4.8% +3.4% ▲7.4% +11.8% +4.1%
2 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車
3 49797 億円 55138 億円 71123 億円 77952 億円 70948 億円 69301 億円 72108 億円 87746 億円 88950 億円 92142 億円 66933 億円 91741 億円 82042 億円 92250 億円 104125 億円 109194 億円 120463 億円 113329 億円 118254 億円 123072 億円
4 ▲14.7% (12.0%) +10.7% (12.3%) +29.0% (14.0%) +9.6% (15.4%) ▲9.0% (14.9%) ▲2.3% (13.4%) +4.1% (14.7%) +21.7% (16.8%) +1.4% (16.3%) +3.6% (15.1%) ▲51.3% (12.4%) +37.1% (13.6%) ▲10.6% (12.5%) +12.4% (14.5%) +12.9% (14.9%) +4.9% (14.9%) +10.3% (15.9%) ▲5.9% (16.2%) +4.3% (15.1%) +4.1% (15.1%)

5 rows × 24 columns

for i, col in enumerate(df3.columns):
    df3.iloc[:, i] = df3.iloc[:, i].str.replace('億円', '')
df3.head()
1995年 1996年 1997年 1998年 1999年 2000年 2001年 2002年 2003年 2004年 2009年 2010年 2011年 2012年 2013年 2014年 2015年 2016年 2017年 2018年
0 415309 447313 509380 506450 475476 516542 489792 521090 545484 611700 541706 673996 655465 637476 697742 730930 756139 700358 782865 814788
1 +2.6% +7.7% +13.9% ▲0.6% ▲6.1% +8.6% ▲5.2% +6.4% +4.7% +12.1% ▲33.1% +24.4% ▲2.7% ▲2.7% +9.5% +4.8% +3.4% ▲7.4% +11.8% +4.1%
2 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車 自動車
3 49797 55138 71123 77952 70948 69301 72108 87746 88950 92142 66933 91741 82042 92250 104125 109194 120463 113329 118254 123072
4 ▲14.7% (12.0%) +10.7% (12.3%) +29.0% (14.0%) +9.6% (15.4%) ▲9.0% (14.9%) ▲2.3% (13.4%) +4.1% (14.7%) +21.7% (16.8%) +1.4% (16.3%) +3.6% (15.1%) ▲51.3% (12.4%) +37.1% (13.6%) ▲10.6% (12.5%) +12.4% (14.5%) +12.9% (14.9%) +4.9% (14.9%) +10.3% (15.9%) ▲5.9% (16.2%) +4.3% (15.1%) +4.1% (15.1%)

5 rows × 24 columns

df4 = df3[2:30][0:][::3]
df5 = df3[2:31][1:][::3]
a=[]
c=[]
for i, col in enumerate(df4.columns):
    b=list(df4.iloc[:, i].values)
    a.append(b)
for i, col in enumerate(df5.columns):
    d=list(df5.iloc[:, i].values)
    c.append(d)
e=[]
for i in range(24):
    f=list(zip(a[i],c[i]))
    e.append(f)
years = list(range(1995,2019))
years = ",".join(map(str, years))
years = years.split(',')
b = [[i[j] for i in e]for j in range(10)]
y = []
for j in range(10):
    for i in range(24):
        v = list(b[j][i])
        v.append(years[i])
        y.append(v)
df6=pd.DataFrame(y,columns = ['輸出品' , '輸出額', '年'])
df6["輸出額"] = pd.to_numeric(df6["輸出額"])
df6["年"] = pd.to_numeric(df6["年"])
df6.dtypes
輸出品    object
輸出額     int64
年       int64
dtype: object
df6.set_index('年', inplace=True)
from matplotlib.pyplot import *
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
import matplotlib.patches as mpatches
style.use('ggplot')

rcParams["font.size"] = "18"
fp = FontProperties(fname='/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf', size=54)
rcParams['font.family'] = fp.get_name()

fig, ax = subplots(figsize=(20,12))
df6.groupby('輸出品')['輸出額'].plot(legend=True)
ax.legend(loc='upper right', fancybox=True, framealpha=0.5)
ax.lines[7].set_linewidth(10)
yticks(np.arange(0, 16e4, 1e4),
           ['{}兆'.format(int(x / 1e4)) if x > 0 else 0 for x in np.arange(0, 16e4, 1e4)]);

自動車が突出していることが良く分かる。この国の輸出は自動車に支えられていることが一目瞭然となっているが、自動車の部分品も自動車の一部と考えると両者は合わせて1つと見なす必要があるだろう。なので、自動車の部分品を自動車に取り込んでみた。

自動車と自動車の部分品を合算する

l = []
m = []
for i in range(24):
    for j in range(10):
        if e[i][j][0] == '自動車':
            n = e[i][j][1]
            l.append(n)
for i in range(24):
    for j in range(10):
        for k in range(2):
            if e[i][j][k] == '自動車の部分品':
                n = e[i][j][k+1]
                m.append(n)
p = [int(x)+int(y) for x, y in zip(l, m)]
for i in range(24):
    y[i][1] = p[i]
df6=pd.DataFrame(y,columns = ['輸出品' , '輸出額', '年'])
df6["輸出額"] = pd.to_numeric(df6["輸出額"])
df6["年"] = pd.to_numeric(df6["年"])
df6.dtypes
輸出品    object
輸出額     int64
年       int64
dtype: object
df7 = df6.drop(df6[df6['輸出品']=='自動車の部分品'].index)
df7.set_index('年', inplace=True)
fig, ax = subplots(figsize=(20,12))
df7.groupby('輸出品')['輸出額'].plot(legend=True)
ax.legend(loc='upper right', fancybox=True, framealpha=0.5)
ax.lines[7].set_linewidth(10)
yticks(np.arange(0, 20e4, 1e4),
           ['{}兆'.format(int(x / 1e4)) if x > 0 else 0 for x in np.arange(0, 20e4, 1e4)]);

自動車と自動車の部分品だけで、日本の輸出の2割を稼ぎ出している。半導体等電子部品、鉄鋼、原動機、半導体等製造装置、プラスチックを足した輸出額よりも多い。まさに自動車会社さまさまと言った感じだ。しかしながら、今後は自動車の対米輸出が激減する可能性があり、輸出が大きく落ち込む可能性が指摘されている。輸出競争力のある技術の創出が当面の日本の緊急課題であることは言うまでもあるまい。