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)
ピラミッドにこだわらなければもっと簡単にできる:
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()
男女比:
plt.figure(figsize=(10, 4)) plt.plot(df["Age"], df["Male"] / df["Female"], "o-") plt.xlabel("年齢") plt.ylabel("男女比") plt.grid()
県ごとにやってみるとおもしろい。福島県(安東量子さんの福島県の20代女性転出超過数が全国的にも多いこと参照):
東京都:
三重県:
Last modified: