生命表については日本人の平均寿命も参照されたい。
2022年12月23日に、厚労省から新しい生命表が公開された。
上記ページのファイル 2022-12-23をクリックすると、特に今年は、5年に1度の令和2年都道府県別生命表が含まれることがわかる。
都道府県別生命表の下のほうに、表番号80000の都道府県別平均寿命の年次推移がある。このCSVファイル(ファイル名80000.csv)を眺めてみよう。
このCSVファイルは、文字コードがShift JISで、開くとExcelが立ち上がる。Excelの画面の一部を下に示す。
ご覧のように、データとしての使いやすさを考えていないCSVファイルである。都道府県名は「青 森」のように全角スペースで整形されている。
これにデータの整然化を行って、次のように縦長のCSVに整形したものを、life_2020_80000.csvとして置いておく。文字コードはBOM付きUTF-8である。この先頭・末尾を次に示す:
性別,都道府県,年1,年2,平均寿命 男,北海道,1921,1925,43.61 男,青森,1921,1925,38.86 男,岩手,1921,1925,37.31 男,宮城,1921,1925,42.46 男,秋田,1921,1925,39.69 ……(中略)…… 女,熊本,2020,2020,88.22 女,大分,2020,2020,87.99 女,宮崎,2020,2020,87.6 女,鹿児島,2020,2020,87.53 女,沖縄,2020,2020,87.88
大正10〜14年(1921〜1925)の北海道の男の平均寿命は43.61、というわけである。
まずはこれを読んでみよう:
import pandas as pd df = pd.read_csv("https://okumuralab.org/~okumura/python/data/life_2020_80000.csv")
グラフを描くために、「年1」と「年2」の平均を「年」としよう:
df["年"] = (df["年1"] + df["年2"]) / 2
一番新しい2020年の男女の平均寿命の散布図を描いてみる:
import matplotlib.pyplot as plt life_m = df.query("性別 == '男' and 年 == 2020")["平均寿命"] life_f = df.query("性別 == '女' and 年 == 2020")["平均寿命"] prefs = df.query("性別 == '男' and 年 == 2020")["都道府県"] plt.plot(life_m, life_f, "o") plt.axis("equal") plt.xlabel("男") plt.ylabel("女") for i, j, k in zip(life_m, life_f, prefs): plt.text(i, j, k)
全体として男のほうがばらつきが大きい。青森県は男女とも平均寿命が短い。
推移をプロットしてみよう:
for sex in ["男", "女"]: for pref in prefs: if pref == "沖縄": df1 = df.query(f"性別 == '{sex}' and 都道府県 == '{pref}'") plt.plot(df1["年"], df1["平均寿命"], "s-", color="#1f77b4") else: df1 = df.query(f"性別 == '{sex}' and 都道府県 == '{pref}'") if sex == "男": plt.plot(df1["年"], df1["平均寿命"], "o-", color="#2ca02c10") else: plt.plot(df1["年"], df1["平均寿命"], "o-", color="#ff7f0e10")
青い四角で示したのは沖縄である。沖縄は長寿県として有名であったが、今はそうではなく、特に男の平均寿命は下位に転じている。