本日は将来推計人口について考えてみます。将来推計人口とは、国連や各国政府が推計した将来の人口のことです。日本では、直近の国勢調査による人口数を基に、出生率や死亡率などを考慮して推計し、国立社会保障・人口問題研究所がほぼ5年ごとに作成、公表します。
今回は2015年の人口を「1」として将来推計人口の色分けを行ってみたいと思います。
日本地図の作成
まずは、前回使用した日本地図を都道府県ごとに集約します。つまり、ディゾルブですね。以下スクリプトを使用してください。
# -*- coding: utf-8 -*- import arcpy #入力用のShapeファイルと出力用のフィーチャクラスなどを指定 arcpy.Dissolve_management("D:\python\population\japan_ver80.shp", "C:\ArcPySample\ArcPySample.gdb\japan", "KEN", "", "MULTI_PART", "DISSOLVE_LINES")
これが
こんな感じでディゾルブされました。本当は市区町村別に出したかったのですが、一覧がみつからず今回は断念して、都道府県別にします。。。
将来推計人口データのダウンロード
国立社会保障・人口問題研究所から都道府県別の将来推計人口データをダウンロードします。
http://www.ipss.go.jp/pp-fuken/j/fuken2007/suikei.html
pandasのインストール
こういった場合はpandasが便利です。インストールをお願いします。
サンプルコード①
2015年の人口を「1」として将来推計人口の算出を行います。
# -*- coding: utf-8 -*- import pandas as pd #csv読込 df = pd.read_csv("D:\python\population\population.csv",encoding="SHIFT-JIS") #pandasのカラム追加 df['percent2020'] = "" df['percent2025'] = "" df['percent2030'] = "" df['percent2035'] = "" #japanレイヤにカラムを追加 arcpy.AddField_management("japan", "PercentOf2020", "Double") arcpy.AddField_management("japan", "PercentOf2025", "Double") arcpy.AddField_management("japan", "PercentOf2030", "Double") arcpy.AddField_management("japan", "PercentOf2035", "Double") for key,rowD in df.iterrows(): cursorJ = arcpy.UpdateCursor("japan") for rowJ in cursorJ: if rowD.todouhuken == rowJ.KEN: percent2020 = float(rowD.year2020.replace(",", "")) / float(rowD.year2015.replace(",", "")) percent2025 = float(rowD.year2025.replace(",", "")) / float(rowD.year2015.replace(",", "")) percent2030 = float(rowD.year2030.replace(",", "")) / float(rowD.year2015.replace(",", "")) percent2035 = float(rowD.year2035.replace(",", "")) / float(rowD.year2015.replace(",", "")) rowJ.setValue("PercentOf2020", percent2020) rowJ.setValue("PercentOf2025", percent2025) rowJ.setValue("PercentOf2030", percent2030) rowJ.setValue("PercentOf2035", percent2035) cursorJ.updateRow(rowJ)
正常終了後、テーブルウインドウを確認してみてください。以下のようになっていたら成功です。
以下のようにレイヤのプロパティを変更します。
サンプルコード②
以下スクリプトをArcMap上で実行してください。タイマーなどをしかけて一定間隔ごとに描画させてもいいかもしれませんね。
# -*- coding: utf-8 -*- import arcpy mxd = arcpy.mapping.MapDocument("CURRENT") for lyr in arcpy.mapping.ListLayers(mxd): if lyr.symbologyType == "GRADUATED_COLORS": if lyr.symbology.valueField == "": lyr.symbology.valueField = "PercentOf2020" elif lyr.symbology.valueField == "PercentOf2020": lyr.symbology.valueField = "PercentOf2025" elif lyr.symbology.valueField == "PercentOf2025": lyr.symbology.valueField = "PercentOf2030" elif lyr.symbology.valueField == "PercentOf2030": lyr.symbology.valueField = "PercentOf2035" else: lyr.symbology.valueField = "PercentOf2020" lyr.symbology.classBreakValues = [0,0.80 ,0.825 ,0.85, 0.875, 0.90, 0.925, 0.95 , 0.975, 1.00, 1.025, 1.05,1.075, 1.10] arcpy.RefreshActiveView()
2020年の将来推計人口
ほとんどの地域が微減といったところでしょうか。東京と見づらいのですが沖縄だけ唯一微増していますね。
2025年の将来推計人口
北海道、東北、北陸、四国、山陰、九州南部に顕著な現象が見られます。
2030年の将来推計人口
ほとんどの地域で大きな人口減少が見られます。秋田県はなんと現在の人口の8割程度になってしまうみたいですね。
2035年の将来推計人口
どの地域も現在と比べると8割、良くて9割程度の人口になってしまうみたいですね。沖縄だけは微増をキープしています。これは興味深いですね。
2035年以降も人口減少は続くと思うので、このままだと日本の衰退は確実ですね。かといって移民政策をとるわけにもいかず、出生率をあげることもできず、ジリ貧が続くのではないでしょうか。なんとか良くなってほしいものですがなかなか難しい問題ですね。今回は将来推計人口についてでしたが、高齢化についての分析などもおもしろそうですね。
以上、「ArcpyとPandasを使用して将来推計人口を視覚化する」でした。