日本は外国人人口が増えていると言われていますが、移民大国のアメリカと比べれば取るに足りない微々たる数字です。超少子化による人口減少を補うには外国人人口を増やすしかありません。日本がこの先生きのこるためには、アメリカのような移民大国になるしかないと、世界中の識者が警鐘を鳴らしてくれています。
import pandas as pd
df = pd.read_excel('jappopu.xls',encoding='cp932',skiprows=1)
df.drop(['団体コード'],axis=1,inplace=True)
df.head(2)
a=[i for i in df.columns[5:25]]
b=["{}歳".format(i) for i in df.columns[5:25]]
f = ["'{}': '{}'".format(a_, b_) for a_, b_ in zip(a, b)]
f = ', '.join(f)
print(f)
df.rename(columns={'5~9': '5~9歳', '10~14': '10~14歳', '15~19': '15~19歳', '20~24': '20~24歳', '25~29': '25~29歳', '30~34': '30~34歳', '35~39': '35~39歳', '40~44': '40~44歳', '45~49': '45~49歳', '50~54': '50~54歳', '55~59': '55~59歳', '60~64': '60~64歳', '65~69': '65~69歳', '70~74': '70~74歳', '75~79': '75~79歳', '80~84': '80~84歳', '85~89': '85~89歳', '90~94': '90~94歳', '95~99': '95~99歳'} ,inplace = True)
df.head(2)
df1 = pd.read_excel('foreignerpop.xls',encoding='cp932',skiprows=1)
df1.drop(['団体コード'],axis=1,inplace=True)
df1.head(2)
df1.rename(columns={'総数':'外国人総数','0~4歳':'0〜4','100歳以上':'100〜'},inplace=True)
df1.head(1)
df2 = pd.merge(df,df1,how='right',on=['都道府県名','市区町村名','性別'])
df2.head(1)
df2['外国人比']=df2['外国人総数']/df2['総数']
df2['外国人比'].head(2)
city=df2[((df2['外国人比']) > 0) & (df2['総数'] >= 1e1) & (df2['性別']=='計')]
city.sort_values(by='外国人比',ascending=False).dropna().head(10)
外国人比率が高い市町村は、今後もこの比率はどんどん上昇していき、何れは外国人が多数派になるのも時間の問題のように思われます。これは非常に良い傾向であると言えます。というのも、この国は、日本人だけのものではないからです。次に、人口が1万人以下の市町村に限定してみます。
city=df2[((df2['外国人比']) > 0) & (df2['総数'] < 1e4) & (df2['性別']=='計')]
city.sort_values(by='外国人比',ascending=False).dropna().head(10)
今度は、人口が1万人以上10万人未満の市町村に限定してみます。
city=df2[((df2['外国人比']) > 0) & (df2['総数'] > 1e4) & (df2['総数'] < 1e5) & (df2['性別']=='計')]
city.sort_values(by='外国人比',ascending=False).dropna().head(10)
最後に、人口が10万人以上の市に限定してみます。
city=df2[((df2['外国人比']) > 0) & (df2['総数'] >= 1e5) & (df2['性別']=='計')]
city.sort_values(by='外国人比',ascending=False).dropna().head(10)
df2['日本人未成年'] = df2[['0~4歳','5~9歳','10~14歳','15~19歳']].sum(axis=1)
df2['日本人高齢者'] = df2[['65~69歳','70~74歳','75~79歳','80~84歳','85~89歳','90~94歳','95~99歳','100歳以上']].sum(axis=1)
df2['外国人未成年'] = df2[['0〜4','5~9','10~14','15~19']].sum(axis=1)
df2['外国人高齢者'] = df2[['65~69','70~74','75~79','80~84','85~89','90~94','95~99','100〜']].sum(axis=1)
df2.head(2)
日本人・外国人の未成年・高齢者比をそれぞれ新たに作ります。
df2['未成年比']=df2['外国人未成年']/df2['日本人未成年']
df2['高齢者比']=df2['外国人高齢者']/df2['日本人高齢者']
city=df2[((df2['未成年比']) > 0) & (df2['総数'] >= 1e1) & (df2['性別']=='計')]
city.sort_values(by='未成年比',ascending=False).dropna().head(10)
city=df2[((df2['高齢者比']) > 0) & (df2['総数'] >= 1e1) & (df2['性別']=='計')]
city.sort_values(by='高齢者比',ascending=False).dropna().head(10)
年齢層別在留外国人の総人口をグラフ化する¶
from matplotlib.pyplot import *
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
style.use('dark_background')
fp = FontProperties(fname='/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf', size=54)
rcParams['font.family'] = fp.get_name()
rcParams["font.size"] = "20"
fig, ax = subplots(figsize=(18,10))
df2.iloc[[0], range(26,47)].T.plot(kind='barh',ax=ax)
rc('xtick', labelsize=20)
rc('ytick', labelsize=20)
ax.set_ylabel('Age group',fontsize=20)
ax.set_xlabel('人口(人)',fontsize=20)
ax.legend(['人口'],loc='upper right',fancybox=True,framealpha=0.5,prop={'size': 26})
xticks(np.arange(0,4.1e5,1e5/5),
['{}万'.format(int(x/1e4)) if x > 0 else 0 for x in np.arange(0,4.1e5,1e5/5)]);
グラフから20代と30代が圧倒的に多いことが見て取れます。今後、20代の外国人人口が増え、なおかつ、この年代層の出生数が上昇すれば、外国人の子供が増えることで日本の少子化に歯止めがかかる可能性があります。そのためには、10代・20代の外国人留学生と技能実習生をどんどん受け入れる必要があることは言うまでもありません。少なくとも、毎年30万人以上の外国人が日本に流入する必要があります。
Python:在留資格別外国人数を国籍別に棒グラフ化する
Python:在留外国人の詳細を円グラフで表示する
Python:国籍別に在留外国人数の多い市町村を抽出する
Python:1950年〜2017年の年齢別自殺数推移を棒グラフ化する
Python:年齢別交通事故死亡数を死亡割合に変換する
Python:日本人の年齢別死亡者数の推移をプロットして考察する
Python:結婚適齢期女性が最も余っている都市を探し出す
Python:日本人の年代別・性別死亡数を視覚化して考察する
1908年〜2017年の平均婚姻年齢(初婚・全婚姻)をグラフ化
日本の交通事故死亡者数の推移を性別・年齢別に棒グラフ化する