日本人の平均寿命

[2022-07-29] 2021年までのデータに基づいて図を描き直した。

Rで描いた日本人の平均寿命のPython版である。

e-Statで公開されている簡易生命表の「年齢」および男女「生存数」(10万人あたり)を抜き出したCSVファイル lifetable2021.csv を読んでプロットする。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("https://okumuralab.org/~okumura/stat/data/lifetable2021.csv")
plt.plot(df.Age, df.Male / 100000)
plt.plot(df.Age, df.Female / 100000)
plt.yticks([0, 0.5, 1])
plt.grid()
plt.legend(["男", "女"])
plt.xlabel("年齢")
plt.ylabel("生存率")
plt.savefig("220729a.svg", bbox_inches="tight")
年齢と生存率

2021年の平均寿命は男81.47歳,女87.57歳であるが,寿命の中央値(上の図の半減期)にあたる寿命中位数は男84歳台,女90歳台である。これは上の図を描いた後で plt.xlim(82, 92) などと打ち込んで右の方を拡大すると読み取りやすい。平均より中央値のほうが意味があるだろうし,自分(男性)としても,寿命が81歳台と考えるより84歳台と考えるほうがうれしい。さらに,現在の年齢(70歳)を1として描き直すと,半減期は87歳近くまで伸びるので,さらにうれしい。

上のグラフを微分したものに相当するものは,簡易生命表では「死亡数」として10万人あたりの値が出ている。これを上と同様にプロットしたものが次の図である。

年齢と死亡数

死亡数の最頻値は男88歳,女93歳である。女性の右端が上がっているのは,最後の階級(105歳)がそれ以上の歳も含んでいるためであろう。

ついでに平均寿命の推移も:

df2 = pd.read_csv("https://okumuralab.org/~okumura/stat/data/life_expectancy_Japan.csv",
                  comment="#")
plt.plot(df2.Year, df2.Male, "o-")
plt.plot(df2.Year, df2.Female, "o-")
plt.xlabel("年")
plt.ylabel("平均寿命")
plt.grid()
plt.legend(["男", "女"])
plt.savefig("220729b.svg", bbox_inches="tight")
平均寿命の推移

1990年以降に限ってプロット:

df3 = df2[df2.Year >= 1990]
plt.plot(df3.Year, df3.Male, "o-")
plt.plot(df3.Year, df3.Female, "o-")
plt.xlabel("年")
plt.ylabel("平均寿命")
plt.grid()
plt.legend(["男", "女"])
plt.savefig("220729c.svg", bbox_inches="tight")
平均寿命の推移

1995年は阪神・淡路大震災,2011年は東日本大震災の年である。2021年はCOVID-19が原因のようだ。ただし2020年は逆に平均寿命の伸びが増えているように見える。日本の超過死亡?も参照されたい。

[2022-07-30] 男女の違いをより詳しく見ると次のようになる:

平均寿命の推移

ところで,中澤港先生に教えていただいたのだが,平均寿命の男女差をプロットするとおもしろい。男女差はほぼ7歳近くまで開いたが,その後また6歳近くまで持ち直しているのだ。裏RjpWikiさん中澤先生の考察を参照されたい。

plt.plot(df3.Year, df3.Female - df3.Male, "o-")
plt.xlabel("年")
plt.ylabel("平均寿命の男女差")
plt.grid()
plt.savefig("220729d.svg", bbox_inches="tight")
平均寿命の推移

Last modified: