Python:2008年末〜2018年末の在留外国人数推移をグラフ化

2008年末〜2018年末(自民→民主党→自民)と、安倍政権下(2012年末〜2018年末)の国籍別在留外国人数推移をプロットする。安倍政権の唯一の成果が、在留外国人数を増加させたことであると言っても決して過言ではないだろう。

import tabula

df = tabula.read_pdf("http://www.moj.go.jp/content/001289225.pdf",
             output_format='dataframe',
             pages = '1',
             encoding='utf-8',
             java_options=None,
             pandas_options=None,
             multiple_tables=False)
df1=df[5:18]
df1
Unnamed: 0 Unnamed: 1 Unnamed: 2 平成20年末 平成21年末 平成22年末 平成23年末 平成24年末 平成25年末 平成26年末 平成27年末 平成28年末 平成29年末 平成30年末 Unnamed: 14 Unnamed: 15
5 NaN 総 数 NaN 2,144,682 2,125,571 2,087,261 2,047,349 2,033,656 2,066,445 2,121,831 2,232,189 2,382,822 2,561,848 2,731,093 100.0 6.6
6 NaN 644,265 670,683 678,391 668,644 652,595 649,078 654,777 665,847 695,522 730,890 764,720 28.0 4.6
7 国 ・ 朝 鮮 NaN 580,760 571,598 560,799 542,182
8 NaN 489,431 481,249 465,477 457,772 453,096 450,663 449,634 16.5 -0.2
9 ト ナ ム NaN 40,524 40,493 41,354 44,444 52,367 72,256 99,865 146,956 199,990 262,405 330,835 12.1 26.1
10 ィ リ ピ ン NaN 193,426 197,971 200,208 203,294 202,985 209,183 217,585 229,595 243,662 260,553 271,289 9.9 4.1
11 ラ ジ ル NaN 309,448 264,649 228,702 209,265 190,609 181,317 175,410 173,437 180,923 191,362 201,865 7.4 5.5
12 パ ー ル NaN 11,556 14,745 17,149 20,103 24,071 31,537 42,346 54,775 67,470 80,038 88,951 3.3 11.1
13 NaN 22,775 33,324 40,197 48,723 52,768 56,724 60,684 2.2 7.0
14 NaN 51,704 51,235 49,821 49,119 48,361 49,981 51,256 52,271 53,705 55,713 57,500 2.1 3.2
15 イ ン ド ネ シ ア NaN NaN 36,560 24,777 24,374 24,305 25,532 27,214 30,210 35,910 42,850 49,982 56,346 2.1 12.7
16 NaN 26,190 37,812 38,240 41,316 40,133 41,208 43,081 45,379 47,647 50,179 52,323 1.9 4.3
17 の 他 NaN 250,249 251,608 248,223 244,677 284,797 290,098 301,627 321,524 345,189 373,339 396,946 14.5 6.3
df1 = df1.set_index(['Unnamed: 1'])
df1.index=['総数','中国','韓国・朝鮮','韓国','ベトナム','フィリピン','ブラジル','ネパール','台湾','米国',\
          'インドネシア','タイ','その他'] 
for i, col in enumerate(df1.columns):
    df1.iloc[:, i] = df1.iloc[:, i].str.replace(',', '')
df1=df1.drop(['Unnamed: 0','Unnamed: 2'], axis=1)

韓国・朝鮮、韓国、台湾の’-‘をゼロに置き換える。

df1=df1.replace('-', 0)
import pandas as pd

df1 = df1.apply(pd.to_numeric, errors="coerce").astype(int)

2008年末〜2018年末の在留外国人数推移

from matplotlib.pyplot import *
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
style.use('fivethirtyeight')

fp = FontProperties(fname='/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf', size=54)
rcParams['font.family'] = fp.get_name()
rcParams["font.size"] = "25"
fig, ax = subplots(figsize=(20,15))
rc('xtick', labelsize=35)
rc('ytick', labelsize=35)
df1.iloc[0:1:,0:11].T.plot(ax=ax,kind='barh',legend=False)
xticks(np.arange(0,2.9e6,1e6/4),
   ['{}万'.format(int(x/1e4)) if x > 0 else 0 for x in np.arange(0,2.9e6,1e6/4)])
#ax.legend(loc='best', fancybox=True, framealpha=0.5, fontsize=40)
for i in ax.patches:
    ax.text(i.get_width()+1.5e4,i.get_y()+.45,\
      '{:,}人'.format(int(round((i.get_width()), 2))), fontsize=35, color='k')
ax.invert_yaxis();

民主党政権誕生年の2009年〜安倍政権誕生年の2012年末までの3年間、在留外国人数は11万人以上減っているのに対し、安倍政権の6年間で70万人近く増えているのは良い傾向だろう。

2008年末〜2018年末の国籍別在留外国人数の推移

韓国、韓国・朝鮮、台湾は省く。

df2=df1.drop(['韓国','韓国・朝鮮','台湾'])
fig, ax = subplots(figsize=(22,14))
rc('xtick', labelsize=25)
rc('ytick', labelsize=25)
df2.iloc[1:13:,0:11].T.plot(ax=ax)
ax.lines[1].set_linestyle('--')
ax.lines[2].set_linestyle('-.')
ax.lines[3].set_dashes((2,2))
ax.lines[6].set_linestyle('-.')
xticks(range(0,len(df2.columns[0:11]),1),df2.columns[0:11],rotation=45);
yticks(np.arange(0,8.1e5,1e5/2),
   ['{}万'.format(int(x/1e4)) if x > 0 else 0 for x in np.arange(0,8.1e5,1e5/2)])
ax,legend(bbox_to_anchor=(0,1.02,1,0.2),loc="lower left",mode="None",\
          borderaxespad=0,ncol=5,prop={'size': 26});

安倍政権誕生後、ベトナムが驚異的な伸びを見せている。落ち目のブラジルを抜き去り、順調に数を伸ばしているフィリピンも華麗に追い抜いている。今年末にはその他も追い抜いているかもしれない。近所にベトナム料理店が一昨年当たりにできたのだが、今年潰れてしまったようである。ベトナム料理と言えば、一昔前に晴海トリトンスクエアにあった、一度行ってお気になったベトナム料理店が、何度か行った後であっさり潰れてしまった時はかなりショックだった記憶が残っている。

安倍政権下での在留外国人推移

df3=df1.drop(['韓国・朝鮮'])
fig, ax = subplots(figsize=(22,14))
rc('xtick', labelsize=20)
rc('ytick', labelsize=25)

df3.iloc[1:13:,4:11].T.plot(ax=ax,lw=4)
ax.lines[1].set_linestyle('--')
ax.lines[2].set_linestyle('-.')
ax.lines[3].set_dashes((2,2))
ax.lines[4].set_dashes((3,2))
ax.lines[6].set_linestyle('-.')
xticks(range(0,len(df3.columns[4:11]),1),df2.columns[4:11],rotation=45);
yticks(np.arange(0,8.1e5,1e5/2),
   ['{}万'.format(int(x/1e4)) if x > 0 else 0 for x in np.arange(0,8.1e5,1e5/2)])
ax,legend(bbox_to_anchor=(0,1.02,1,0.2),loc="lower left",mode="None",\
          borderaxespad=0,ncol=6,prop={'size': 26});

韓国が減っているのが気になる。このままだとベトナムとその他に抜かれそうである。落ち目だったブラジルもここ数年増えているようである。ネパールとフィリピンも順調な伸びを示している。安倍政権誕生以降、在留外国人数が順調に伸びているのは評価するが、日本は、国際的に先進国と思われている以上、他の先進国(G7メンバー)のように、もっと難民を積極的に受け入れる義務があることも肝に銘じておくべきだろう。