都道府県ごとの平均寿命

生命表については日本人の平均寿命も参照されたい。

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)
都道府県別平均寿命 2020年

全体として男のほうがばらつきが大きい。青森県は男女とも平均寿命が短い。

推移をプロットしてみよう:

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")
都道府県別平均寿命の推移

青い四角で示したのは沖縄である。沖縄は長寿県として有名であったが、今はそうではなく、特に男の平均寿命は下位に転じている。