[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: