日本の右肩下がりの出生数と右肩上がりの死亡者数をグラフ化する

1947年〜2018年の日本の人口動態(出生数と死亡数)の推移をグラフ化する。1947年と言えば昭和22年、戦後2年しか経っていない先行き不透明な混沌としたこの時代に、非常に多くの人々が子供を産んでいるのは驚きに値するだろう。

スポンサーリンク

人口動態データの準備

以下のサイトからデータをダウンロードする。

import tabula

df = tabula.read_pdf("https://www.mhlw.go.jp/toukei/saikin/hw/jinkou/suikei18/dl/2018suikei.pdf",
             output_format='dataframe',
             pages = '4',
             encoding='utf-8',
             java_options=None,
             pandas_options=None,
             multiple_tables=False)

df.head()
Unnamed: 0 年次 出生数 死亡数 自然増減数 死産数 婚姻件数 離婚件数
0 1947 昭和 22 年 2 678 792 1 138 238 1 540 554 123 837 934 170 79 551
1 1948 23 2 681 624 950 610 1 731 014 143 963 953 999 79 032
2 1949 24 2 696 638 945 444 1 751 194 192 677 842 170 82 575
3 1950 25 2 337 507 904 876 1 432 631 216 974 715 081 83 689
4 1951 26 2 137 689 838 998 1 298 691 217 231 671 905 82 331

データをセーブする。

df.to_csv('jappopu.csv', index=False)

データをロードする。

df = read_csv('jappopu.csv')
df.head()
Unnamed: 0 年次 出生数 死亡数 自然増減数 死産数 婚姻件数 離婚件数
0 1947 昭和 22 年 2 678 792 1 138 238 1 540 554 123 837 934 170 79 551
1 1948 23 2 681 624 950 610 1 731 014 143 963 953 999 79 032
2 1949 24 2 696 638 945 444 1 751 194 192 677 842 170 82 575
3 1950 25 2 337 507 904 876 1 432 631 216 974 715 081 83 689
4 1951 26 2 137 689 838 998 1 298 691 217 231 671 905 82 331

数字の間のスペースを取り除く。

df = df.replace(r'[,\"\']','', regex=True).replace(r'\s*([^\s]+)\s*', r'\1', regex=True)

文字データを数値データに変換する。

df = df.convert_objects(convert_numeric=True)
/root/.pyenv/versions/miniconda3-latest/envs/py368/lib/python3.6/site-packages/ipykernel_launcher.py:1: FutureWarning: convert_objects is deprecated.  To re-infer data dtypes for object columns, use DataFrame.infer_objects()
For all other conversions use the data-type specific converters pd.to_datetime, pd.to_timedelta and pd.to_numeric.
  """Entry point for launching an IPython kernel.

団塊世代とは1947年から1949年の3年間に産まれた人々のことを指す。この世代だけで出生数が800万人を超えている。

df["出生数"][0:3].sum()
8057054
df.rename(columns={'Unnamed: 0':'年'}, inplace=True)
df.drop(['年次'],axis=1,inplace=True)
df.head()
出生数 死亡数 自然増減数 死産数 婚姻件数 離婚件数
0 1947 2678792 1138238 1540554.0 123837 934170 79551
1 1948 2681624 950610 1731014.0 143963 953999 79032
2 1949 2696638 945444 1751194.0 192677 842170 82575
3 1950 2337507 904876 1432631.0 216974 715081 83689
4 1951 2137689 838998 1298691.0 217231 671905 82331
スポンサーリンク

出生数と死亡数をグラフ化する

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,12))

df[['年','出生数']].set_index('年').plot(ax=ax,kind='bar',color='g',alpha=0.5)
df[['年','死亡数']].set_index('年').plot(ax=ax,kind='bar',color='r',alpha=0.5)
yticks(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)]);

出生数の方は、政府の少子化政策が実って順調に減り続けている。死亡者数も今後右肩上がりを続けていくので、日本人の人口は否が応でも減り続ける。外国人労働者大量受け入れで人口減少による労働者不足に歯止めを掛けようとしているが、職場がサイコパスだらけの異常なこの国の労働環境で働き続けることのできる外国人は少ないはずだ。先ずは、多くの職場に巣食うこのキチガイ達を何とかしないとこの国に来てくれる貴重な外国人労働者はいなくなるだろう。

スポンサーリンク
スポンサーリンク