2021年1月〜6月の最新出生数を載せています。令和2年(2020年)の出生数が84万人だったので、令和3年(2021年)の出生数がどうなるのかは気になるところです。巷では、コロナ禍で在宅勤務が増えたので子供が増えるとか、バラマキ政策で一部の若年層世帯はリッチになっているので子供が増えるとかいろいろ言われていますが、トレンドとしては、出生数は減少の一途なので、今年に限って出生数の減少に歯止めがかかるとは到底思えませんが、史上空前のバラマキ政策が功を奏する可能性もまだ若干残ってはいます。
import pandas as pd
df = pd.read_csv('japnumofbirths.csv')
df.head()
不要な部分を消去して、unnamed0を年次、unnamed1を出生数、unnamed2を死亡数に変えます。
df = df.replace(r'[,\"\']','', regex=True).replace(r'\s*([^\s]+)\s*', r'\1', regex=True)
df.rename(columns={'Unnamed: 0':'年 次', 'Unnamed: 1':'出生数', 'Unnamed: 2':'死亡数'}, inplace=True)
df.drop(['(再 掲)', 'Unnamed: 4', 'Unnamed: 5'],axis=1,inplace=True)
df = df.iloc[3:]
df.head()
indexを振り直します。
df.reset_index(drop=True, inplace=True)
df.head(3)
年次を西暦に統一します。index0が1947年で最後が2020年になるようにします。
df["年 次"] = range(1947, 2021)
df.tail(3)
df.dtypes
出生数と死亡数が何故かオブジェクトになっているので数値データに変換する必要があります。
df = df.apply(pd.to_numeric, errors="ignore")
df.dtypes
from matplotlib.pyplot import *
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
style.use('ggplot')
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=(25,25))
df[['年 次','出生数']].set_index('年 次').plot(ax=ax,kind='barh',color='g',alpha=0.5)
xticks(np.arange(0,2.8e6,1e6/4),
['{}万'.format(int(x/1e4)) if x > 0 else 0 for x in np.arange(0,2.8e6,1e6/4)]);
グラフが大きいので1997年〜2020年までに限定します。
from matplotlib.pyplot import *
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
style.use('ggplot')
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=(25,15))
df.loc[50:73,['年 次','出生数']].set_index('年 次').plot(ax=ax,kind='barh',color='g',alpha=0.5)
xticks(np.arange(0,1.55e6,1e6/4),
['{}万'.format(int(x/1e4)) if x > 0 else 0 for x in np.arange(0,1.55e6,1e6/4)]);
for i in ax.patches:
ax.text(i.get_width()+5e3,i.get_y()+.45,\
'{:,}人'.format(int(round((i.get_width()), 2))), fontsize=20, color='k')
ax.invert_yaxis();
2020年の出生数は84万人で、20年前の2000年と比べると35万人も減ってしまっています。35万人という数字は、清瀬市、東村山市、東久留米市の人口を足した数より多いので大変な数字です。それよりも深刻なのは、僅か5年前の2015年に比べて出生数が16万人も減ってしまっているということです。これは明らかに、2014年4月から始まった消費税の大増税の影響だと思われます。消費税前と消費税後では、アベノミクスによる円安効果も重なって、食料品と生活必需品の価格が10%〜100%値上がりしているからです。さらにこの間、光熱費・水道料金も爆上げしているので、子供を産むような環境ではなくなってしまっています。ちなみに、2020年の出生数はコロナの影響は全くないので(コロナが深刻化したのは2020年3月以降)、今年の出生数が気になるところです。
df1 = pd.read_csv('numofbirths2021.csv')
df1
1月〜6月までの合計出生数を見てみます。
df1 = df1.replace(r'[,\"\']','', regex=True).replace(r'\s*([^\s]+)\s*', r'\1', regex=True)
df1 = df1.apply(pd.to_numeric, errors="ignore")
df1["出 生 数"].sum()
2020年の1月〜6月の出生数(速報値)と比較してみます。
df2 = pd.read_csv('numofbirths2020.csv')
df2
df2 = df2.replace(r'[,\"\']','', regex=True).replace(r'\s*([^\s]+)\s*', r'\1', regex=True)
df2 = df2.apply(pd.to_numeric, errors="ignore")
df2["出 生 数"].sum()
df2.loc[0:5,"出 生 数"].sum()
430709-405029
速報値では、2021年1〜6月の出生数は、2020年1〜6月と比べて25680人減っています。単純計算をすれば、今年は出生数が80万人割れをするということになります。グラフにしてみます。
from matplotlib.pyplot import *
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
style.use('ggplot')
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=(25,13))
df2.loc[0:5,['月','出 生 数']].set_index('月').plot(ax=ax,kind='barh',color='g',alpha=0.5, position=1, width=.25)
df1.loc[0:5,['月','出 生 数']].set_index('月').plot(ax=ax,kind='barh',color='r',alpha=0.5, position=0, width=.25)
xticks(np.arange(0,1.1e5,1e4),
['{}万'.format(int(x/1e4)) if x > 0 else 0 for x in np.arange(0,1.1e5,1e4)]);
for i in ax.patches:
ax.text(i.get_width()+2.5e2,i.get_y()+.185,\
'{:,}人'.format(int(round((i.get_width()), 2))), fontsize=20, color='k')
ax.legend(["出生数(2020)","出生数(2021)"],loc='best', prop={'size': 26});
ax.invert_yaxis();
2021年1月の減り方がやばかったのは、2020年3月のコロナショックが原因だと思われます。休校だとかいろいろあってコロナが深刻化しだした時期だったのでこういう結果になったんでしょう。