人口ピラミッドと男女比(2020年版)

Rで描いた人口ピラミッドと男女比の2020年版。

e-Statの令和2年国勢調査の2-1「男女,年齢(各歳),国籍総数か日本人別人口,平均年齢及び年齢中位数-全国,都道府県,21大都市,特別区,人口50万以上の市」Excelファイル(ファイル名b02_01.xlsx)をダウンロードし,全国の各歳の男女別人口を抜き出す。CSVファイルにしたものを pop2020.csv として置いておく。最後の行(AgeがNAになっている)は年齢不詳の人数。

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("https://okumuralab.org/~okumura/python/data/pop2020.csv")

fig, (ax1, ax2) = plt.subplots(1, 2) # sharey=True
ax1.barh(df['Age'], df['Male'] / 10000, height=1, align="edge")
ax1.set_xlim([110, 0])
ax1.set_ylim([0, 111])
ax1.yaxis.tick_right()
ax1.set_yticklabels([])
ax2.barh(df['Age'], df['Female'] / 10000, height=1, align="edge", color="C1")
ax2.set_xlim([0, 110])
ax2.set_ylim([0, 111])
ax1.text(100, 103, "男", horizontalalignment="center")
ax2.text(100, 103, "女", horizontalalignment="center")
ax2.text(-12, 103, "歳")
ax2.text(95, -10, "万人")
ax1.spines['left'].set_visible(False)
ax1.spines['top'].set_visible(False)
ax2.spines['right'].set_visible(False)
ax2.spines['top'].set_visible(False)
2020年の日本の人口ピラミッド

ピラミッドにこだわらなければもっと簡単にできる:

plt.figure(figsize=(10, 4))
plt.plot(df["Age"], df["Male"] / 10000, "o-", label="男")
plt.plot(df["Age"], df["Female"] / 10000, "o-", label="女")
plt.xlabel("年齢")
plt.ylabel("人口(万人)")
plt.legend()
2020年の日本の人口構成

男女比:

plt.figure(figsize=(10, 4))
plt.plot(df["Age"], df["Male"] / df["Female"], "o-")
plt.xlabel("年齢")
plt.ylabel("男女比")
plt.grid()
2020年の日本の男女比

県ごとにやってみるとおもしろい。福島県(安東量子さんの福島県の20代女性転出超過数が全国的にも多いこと参照):

2020年の福島県の男女比

東京都:

2020年の東京都の男女比

三重県:

2020年の三重県の男女比

Last modified: