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

その買うを、もっとハッピーに。|ハピタス

2019年の出生数が、87万人程度まで落ち込むだろうというかなり衝撃的なニュースがありましたが、今回、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)]);

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

1947年〜2018年の出生数と婚姻・離婚件数の推移をプロット
1950年〜2017年の日本人女性の年代別出産数推移をグラフ化
1908年〜2017年の平均婚姻年齢(初婚・全婚姻)をグラフ化
日本の交通事故死亡者数の推移を性別・年齢別に棒グラフ化する
Python:日本人の年齢別死亡者数の推移をプロットして考察する
Python:年齢別交通事故死亡数を死亡割合に変換する
Python:在留外国人比率の高い市町村を条件別に抽出する
Python:日本人の年齢別死亡者数の推移をプロットして考察する
Python:結婚適齢期女性が最も余っている都市を探し出す
Python:国籍別に在留外国人数の多い市町村を抽出する

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