1920年から2015年までの都道府県別の5歳階級別人口推移

 e-Stat を渉猟していると面白いファイルを見つけた.国勢調査は 1920 年から開始されており, 2020 年 3 月現在では最新の調査結果は 2015 年のものである.20 回分の人口データが一つのファイルにまとめられており,グラフ化するには格好のデータである.

 年齢(5歳階級),男女別-都道府県(大正9年~平成27年)というファイルである.リンク先のページにはファイルが 3 つあるが,最後のものが最も粒度が細かいので,これをグラフ化する.

年齢(5歳階級),男女別人口-都道府県(大正9年~平成27年)
年齢(5歳階級),男女別人口-都道府県(大正9年~平成27年)

Power Query でデータクレンジング

 ダウンロードしたファイル (“FEI_CITY_************.csv”) を直接開かず,別の EXCEL ファイルから Power Query で開く.

 「元号」と「和暦(年)」は不要なので削除する.重要なのは西暦年である.

Power Query エディタでデータを開いたところ
Power Query エディタでデータを開いたところ

年齢5歳階級の列を観察する

 まずフィルターをポップアップしてどんなデータがあるか確認する.

年齢5歳階級のフィルターからデータを確認する
年齢5歳階級のフィルターからデータを確認する

 スクロールバーをスクロールして最下段まで見に行く.

年齢5歳階級のフィルターからデータを確認する
年齢5歳階級のフィルターからデータを確認する

「数え歳」の扱い

 5歳階級であるから範囲の数値となる.一部,1歳ずつずれている範囲がある.これは 1945 年の国勢調査にだけ見られるもので,日本人独特の「数え歳」を反映している.終戦後の混乱の中で国勢調査を実施する困難は想像に余りある.

 それはともかく,これはデータ系列を作成するには邪魔になるため,目をつぶって1歳ずらすことにする.

 上図を見ると分かるが,「空白」と「総数」は不要な行なのでチェックを外しておく.「80歳以上」「80~84歳」「85歳以上」が混乱するが,「80歳以上」の分類は国勢調査の始まったごく初期だけのものであるため,このままにしておく.

「列の分割」は「数字から数字以外による分割」

 問題は「年齢5歳階級」をどう分割するかである.適切な分割方法が既に用意されていた.「数字から数字以外による分割」できれいに先頭の数字だけを抽出できる.

「数字から数字以外による分割」
「数字から数字以外による分割」

 この段階でテーブルに読み込む.

生年は年度から年齢階級を引き算して求める

 観察する年によって値が変わるという意味で,年齢は相対値である.しかし,生年は絶対値である.世の中に数多くあるグラフは年齢で区分されていたため,経時的な推移を見るには不適切だった.むしろ生年で区分けした方が分かりやすい.

 こういう作業も EXCEL は得意である.

 まず,Mod 関数で年齢を 5 で除算した剰余を求める.次に,IF 関数で結果が 1 なら年齢から 1 を引き,そうでないなら年齢をそのまま扱う.最後に年度から IF 関数の結果を引き算して生年を求める.

 1 月から 3 月生まれの分がずれるが,これは毎年のことであり,誕生月が不明のためやむを得ないと割り切る.今後の調査で誕生月まで分かれば,さらに正確なデータからグラフを作成できるだろう.

 作業列をコピーして値を貼り付けし,参照関係を解消する.生年の列だけを残して作業列を削除する.結果を .txt ファイルに保存する.

SQL Server でデータ系列を整形

概要

 ウィザードを使って先程保存した .txt ファイルをインポートする.

 EXCEL のデータ系列の仕様に合わせてデータの枠組みを作成する.年度は 1920 年から 2015 年までの 20 件.一方,生年は 1840 年から 2015 年までの 36 件.さらに都道府県が 47 ある.これらの直積 33840 件を求める.

クエリ

 一時テーブルで生年,年度,都道府県を作成する.都道府県コードと都道府県名は先程インポートしてできたテーブルから読み込んでいる(70-71 行目).

 結果をヘッダー付きでコピーし,EXCEL に貼り付ける.マクロつきブックで保存する.

EXCEL VBA でグラフ作成

概要

 人口は絶対値であるためグラフ形式は「積み上げ棒」が妥当である.ここでは男女別ではなく総数のため縦棒である(26 行目).男女別にするなら横棒となる.

 まずテーブルに都道府県コードでフィルターをかけ,結果を Range オブジェクトで取得する(33-35 行目).

 ついで生年でフィルターをかけ,結果を Range オブジェクトで取得する(39-41 行目).

 取得した Range オブジェクトから年度と総人口を取得し,配列に入力する(47-48 行目).

 Series オブジェクトを生成し,データ系列名と横軸,縦軸の値を入力する(52-56 行目).

 以上 61 行目までがグラフの骨格であり,62 行目以降はいわば「お化粧」である.

 63-67 行目でタイトルを有効化し,.Caption プロパティで都道府県名を入力し,位置を調整する.

 70-74 行目で横軸の書式を設定している.軸目盛の方向を左に 90 度傾けている.

 75-100 行目で縦軸の書式を設定している.表示単位を万とし,ラベルを削除する.境界値の最大値に応じて最大値を変更して揃え,主目盛線を 5 等分する.

 101-104 行目でグラフエリアの書式を設定し,グラフ全体のフォントを変更している.

 105-107 行目でデータ系列の間隔を 0 とし,間を詰めている.

 108-189 行目でデータ系列の色を設定する.5歳階級を連続で5回分,合計 25 年で 1 系統となるように選んでいる.結果として 1925 年生まれ,1950 年生まれ,1975 年生まれ,2000 年生まれの色が最も濃くなった.これらは日本の人口統計を議論する上で重要な年齢階級である.

コード

結果

 都道府県によって人口動態が異なるが,全体を俯瞰してみると,やはり第2次世界大戦により東京と大阪,沖縄の人口が激減しているのがまず目に止まる.

 1925 年生まれは終戦時 20 歳から 25 歳にあたり,戦場に駆り出されたと考えられる.他にも疎開で地方に移動した人口もある.1945 年人口が突出している県はおそらく疎開の影響である.

 1950 年代生まれは第1次ベビーブーム世代にあたる.この世代は団塊世代と呼ばれ,高齢化して社会の重荷となりつつある.

 1975 年生まれは団塊ジュニア世代と呼ばれ,20 年後には社会の重荷と言われるようになる.理由は様々であるが,就職氷河期世代とも呼ばれ,十分な資本蓄積が進まなかった影響が大きい.

 2000 年生まれは第3次ベビーブーム世代とはならなかった.団塊ジュニア世代が結婚せず,子供を作らなかったためである.

1920年から2015年までの都道府県別の5歳階級別人口推移
1920年から2015年までの都道府県別の5歳階級別人口推移

まとめ

 総務省の「1920年から2015年までの都道府県別の5歳階級別人口推移」のファイルから,都道府県別の5歳階級別人口推移のグラフを作成した.

 国勢調査から作成された人口動態グラフは数多く存在するが,生年で年齢階級を分類したグラフは見たことがない.

 分類法を変更するだけで複雑なデータが分かりやすくなる.これもデータビジュアライゼーションの一例である.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください