✅ このスクリプトは初回実行時にデータを自動取得します(DoBoX からの直接ダウンロード)。
| ID | データセット名 |
|---|---|
| #222 | dataset #222 |
| #444 | dataset #444 |
| #666 | dataset #666 |
| #777 | dataset #777 |
| #888 | 都市計画区域情報_区域データ_安芸高田市_行政区域 |
| #1467 | 都市計画区域情報_性別年齢別人口_広島市_2020 |
| #1470 | 都市計画区域情報_性別年齢別人口_呉市_2020 |
| #1472 | 都市計画区域情報_性別年齢別人口_竹原市_2020 |
| #1475 | 都市計画区域情報_性別年齢別人口_三原市_2020 |
| #1478 | 都市計画区域情報_性別年齢別人口_尾道市_2020 |
| #1481 | 都市計画区域情報_性別年齢別人口_福山市_2020 |
| #1484 | 都市計画区域情報_性別年齢別人口_府中市_2020 |
| #1486 | 都市計画区域情報_性別年齢別人口_三次市_2020 |
| #1488 | 都市計画区域情報_性別年齢別人口_庄原市_2020 |
| #1489 | 都市計画区域情報_性別年齢別人口_大竹市_2020 |
| #1492 | 都市計画区域情報_性別年齢別人口_東広島市_2020 |
| #1494 | 都市計画区域情報_性別年齢別人口_廿日市市_2020 |
| #1497 | 都市計画区域情報_性別年齢別人口_安芸高田市_2020 |
| #1498 | 都市計画区域情報_性別年齢別人口_江田島市_2020 |
| #1499 | 都市計画区域情報_性別年齢別人口_府中町_2020 |
| #1501 | 都市計画区域情報_性別年齢別人口_海田町_2020 |
| #1503 | 都市計画区域情報_性別年齢別人口_熊野町_2020 |
| #1504 | 都市計画区域情報_性別年齢別人口_坂町_2020 |
| #1506 | 都市計画区域情報_性別年齢別人口_北広島町_2020 |
| #1508 | 都市計画区域情報_性別年齢別人口_世羅町_2020 |
実行コマンド:
cd "2026 DoBoX 教材"
python -X utf8 lessons/L22_population_pyramid.py
DoBoX のオープンデータは申請不要・商用/非商用とも利用可。
data/extras/ は .gitignore 対象(約 57 GB のキャッシュ)。
スクリプト実行で自動再生成されます。
本記事は、広島県インフラマネジメント基盤 DoBoX が公開する 「都市計画区域情報_性別年齢別人口」シリーズ 20 件 (#1467, #1470, #1481, #1492, #1494, #1478, #1475, #1472, #1484, #1489, #1486, #1488, #1497, #1498, #1499, #1501, #1503, #1504, #1506, #1508) を縦結合し、R2 国勢調査ベースで広島県内 20 市町の小地域 (町丁) 11,588件 × 性別×5歳階級 人口データから、 人口ピラミッドの地理構造 ── 全県形状・市町別ピラミッド・町丁単位の高齢化と若年集中・ 性比の異常スポット・100歳以上の地理 ── を分析する研究記事である。 町丁単位の人口ピラミッドは「社会の DNA」であり、 高齢化と若年集中の地理は政策の最前線である。
SMALL_A_CD+TOWN_NAME1+TOWN_NAME2
で識別される。JINKO_SU = M_SU + F_SU が原則 (本データで完全一致)。(early_old + late_old) / JINKO_SU = 65歳以上 / 総人口。
WHO の「高齢化社会 7%」「高齢社会 14%」「超高齢社会 21%」の基準を超えるかを判定。late_old / JINKO_SU = 75歳以上 / 総人口。
医療・介護需要を直接反映する指標。youth / JINKO_SU = 14歳以下 / 総人口。
子育て世代の集中度を反映する指標。M_SU / F_SU × 100。100 が均衡、
<100 で女性多、>100 で男性多。
日本平均は 95 前後。極端に外れる町丁は男女比に偏りを生む施設
(大学・基地・工場・刑務所等) の存在を示唆する。(youth + early_old + late_old) / working × 100。
働き手 100 人が支える非生産年齢人口を表す。
数値が大きいほど社会的負担が重い。GeoDataFrame
(11,588 行 × 61 列) に縦結合できる。
列構造の 1 件だけある追加列 (庄原市の Shape_Area, Shape_Leng)
の処理パターンを身に付ける。sum(axis=1) パターンを学ぶ。geopandas.plot(column=...) で
choropleth (主題図) 化し、
高齢化と若年集中の地理を視覚化する。本記事は性別年齢別人口シリーズ 20 件のみを主データとする研究記事である。
L15 行政区域 20 件は市町別空間集計の境界として参照するが、
L23 (DID 地区境界、次記事で予定) との合体は行わない (要件 I 違反の水増し回避)。
DID 内/外の人口構造比較は発展課題に留める。
ただし都市計画区域コード KUIKI_CD による
「市街化区域 vs 調整区域」の人口構造差異は、本データ内で完結するため分析に含める。
性別年齢別人口 20 件はそれぞれ 1 市町分の 町丁単位 GeoJSON (MultiPolygon) を ZIP で配布している。列構造は 20 件で 100% 一致 (61 列) ─ ただし 庄原市のみ Shape_Area, Shape_Leng の 2 列が追加で計 63 列となる (値はすべて 0 で意味なし、共通 61 列に正規化して読み込む)。
| dataset_id | 市町 | 市町タイプ | DoBoX | 町丁数 | 人口総数 | 追加列 |
|---|---|---|---|---|---|---|
| #1467 | 広島市 | 政令市 | DoBoX | 4,325 | 1,200,754 | - |
| #1470 | 呉市 | 中核市 | DoBoX | 1,569 | 214,592 | - |
| #1481 | 福山市 | 中核市 | DoBoX | 1,491 | 460,930 | - |
| #1492 | 東広島市 | 施行時特例市 | DoBoX | 778 | 196,608 | - |
| #1494 | 廿日市市 | 市 | DoBoX | 537 | 114,173 | - |
| #1478 | 尾道市 | 市 | DoBoX | 442 | 131,170 | - |
| #1475 | 三原市 | 市 | DoBoX | 566 | 90,573 | - |
| #1472 | 竹原市 | 市 | DoBoX | 204 | 23,993 | - |
| #1484 | 府中市 | 市 | DoBoX | 133 | 37,655 | - |
| #1489 | 大竹市 | 市 | DoBoX | 151 | 26,319 | - |
| #1486 | 三次市 | 市 | DoBoX | 394 | 50,681 | - |
| #1488 | 庄原市 | 市 | DoBoX | 181 | 33,633 | Shape_Area,Shape_Leng |
| #1497 | 安芸高田市 | 市 | DoBoX | 59 | 26,448 | - |
| #1498 | 江田島市 | 市 | DoBoX | 169 | 21,930 | - |
| #1499 | 府中町 | 町 | DoBoX | 87 | 51,155 | - |
| #1501 | 海田町 | 町 | DoBoX | 94 | 29,636 | - |
| #1503 | 熊野町 | 町 | DoBoX | 156 | 22,834 | - |
| #1504 | 坂町 | 町 | DoBoX | 90 | 12,582 | - |
| #1506 | 北広島町 | 町 | DoBoX | 101 | 17,763 | - |
| #1508 | 世羅町 | 町 | DoBoX | 61 | 15,125 | - |
合計: 11,588 町丁 / 人口総数 2,778,554 人 (R2 国勢調査ベースの広島県人口は約 280 万人、本データは 20 市町合算で 99.9% カバー)。
61 列は以下の 4 グループに分類できる。
| 列名 | 型 | 意味 |
|---|---|---|
TOKEI_CD | int32 | 統計区分コード。本データでは 0 が大半 |
KUIKI_CD | int32 | 都市計画区域コード (1=市街化, 3=市街化調整, 5=都計外 等と推定)。 本記事の区域別人口構造分析に使用 |
SMALL_A_CD | object | 小地域コード (12 桁)。前2桁=都道府県(34=広島)、次3桁=市区町村、 次4桁=町丁字、最後3桁=細目 |
AREA_CD | object | 地区番号 |
SECRET1-3 | object | 秘匿フラグ列 (3 列)。多くは null だが一部に値あり |
CITY_CD | int32 | 市区町村コード。広島市は 8 区を 101-108 で分割 |
CITY_NAME | object | 市区町村名 (「広島市中区」など、広島市は区名まで含む) |
TOWN_NAME1 | object | 町・字名 (例: 「光南」) |
TOWN_NAME2 | object | 丁目 (例: 「三丁目」)。null の町丁もあり |
| 列名 | 型 | 意味 |
|---|---|---|
JINKO_SU | int32 | 総人口 (= M_SU + F_SU)。5,672 件で 0 (秘匿か実無人) |
M_SU | int32 | 男性総数 (= M_00..M_100 + M_999 の合計) |
F_SU | int32 | 女性総数 (= F_00..F_100 + F_999 の合計) |
男性: M_00, M_05, M_10, M_15, ..., M_95, M_100, M_999 (22 列)
女性: F_00, F_05, F_10, F_15, ..., F_95, F_100, F_999 (22 列)
M_xx = xx 歳〜 xx+4 歳の男性人口。例えば M_45 は 45-49 歳。
M_100 は 100歳以上、M_999 は年齢不詳。
全 22 列の合計が M_SU に一致する。
| 列名 | 型 | 意味 |
|---|---|---|
RITTEKI_CD | int32 | 立地コード。仕様書未公開、参考扱い |
BIKOU | object | 備考。本データでは全件 null (運用上未入力) |
geometry | MultiPolygon | 町丁ポリゴン。EPSG:6671 (JGD2011 平面直角第III系)。 本記事の主役データ。境界が複雑で MultiPolygon が多い |
clip(lower=1) で除算保護、
箱ひげ・分布分析では人口 ≥ 30 人の信頼可町丁 (4,965件)のみ使用。本記事の再現性を担保するため、HTML 1 枚から 生データ・中間 CSV・図 PNG・再現 Python を直リンクで取得できる。
20 件の ZIP は前項の表からそれぞれ DoBoX へリンク。 あるいは一括取得スクリプト:
cd "2026 DoBoX 教材"
py -X utf8 data\extras\L22_population_pyramid\fetch_population_pyramid.py
合計サイズ約 32 MB。監査時に取得済の 3 市町 (広島市・呉市・福山市) は
data/extras/_urban_planning_audit/ から自動コピー、
残り 17 市町は DoBoX から HTTP 取得 (約 30 秒)。
実行は cd "2026 DoBoX 教材"; py -X utf8 lessons\L22_population_pyramid.py。
20 ZIP がローカルにあれば 1 分以内で全図 + CSV 再生成 (要件 S 準拠)。
20 ZIP の GeoJSON を 1 個の GeoDataFrame (11,588 行 × 64 列) に統合し、5 歳階級 44 列を 4 群集約することで、後段の高齢化率・年少率・性比などの意味ある率指標を導出する。
直感: ZIP を読む → 列を共通 61 列に揃える → 縦結合 → CRS 変換 → 5 歳階級を 4 群に集約 → 派生指標を計算。
大筋 (5 ステップ)
load_geojson_zip() で GeoDataFrame を読むsrc_city / src_dsid / ctype を付与pd.concat で縦結合 → 11,588 行 1 個の GeoDataFramesum(axis=1)to_crs(EPSG:6671) で広島県平面直角座標系に投影変換 (m 単位確保)前提と限界: 庄原市の Shape_Area・Shape_Leng は値=0 で意味なしだった。ESRI 系ツールで生成された地理列の名残と推定 (実際の面積は geometry.area から計算可能)。共通 61 列に揃えるのが正解だった。もし将来意味のある追加列が出たら判定ロジックの追従修正が必要。
| 段階 | 列名 | このデータで何が起きるか | 1 行の値の例 |
|---|---|---|---|
| 入力 | M_00, M_05, ..., M_100, M_999 (22 列) |
町丁の男性 5 歳階級人口 (素データ) | [20, 25, 18, 12, ..., 1, 0] |
| 入力 | F_00, F_05, ..., F_100, F_999 (22 列) |
町丁の女性 5 歳階級人口 | [19, 21, 17, 14, ..., 5, 0] |
| 集約 | youth = M_00+M_05+M_10 + F_00+F_05+F_10 |
0-14 歳人口 | 120 (人) |
| 集約 | working = M_15..M_60 + F_15..F_60 (10 階級×2) |
15-64 歳人口 | 650 (人) |
| 集約 | early_old = M_65+M_70 + F_65+F_70 |
65-74 歳人口 | 180 (人) |
| 集約 | late_old = M_75..M_100 + F_75..F_100 (6 階級×2) |
75 歳以上人口 | 150 (人) |
| 派生 | aging_rate = (early_old + late_old) / JINKO_SU |
高齢化率 | 0.300 (= 30.0%) |
| 派生 | youth_rate = youth / JINKO_SU |
年少率 | 0.109 (= 10.9%) |
| 派生 | sex_ratio = M_SU / F_SU * 100 |
性比 | 96.5 (女性やや多) |
このように、22 + 22 = 44 列の生データから 意味ある 4 群指標 (youth/working/early_old/late_old) + 各種率を導出する。 4 群集約は教材として「列演算で大量列を圧縮する」典型例。
20 ZIP のうち、20 件すべてが共通 61 列で読み込み成功。庄原市のみ Shape_Area, Shape_Leng の 2 追加列があったが正規化処理で吸収。統合後の pop GeoDataFrame は 11,588 行 × 64 列(61 共通 + src_city + src_dsid + ctype)。4 群集約により、22+22 = 44 列の年齢階級データが 4 列 (youth/working/early_old/late_old) + 派生指標 8 列 (aging_rate, late_rate, youth_rate, dep_index, sex_ratio, density_per_km2, centenarian, unknown) に圧縮された。処理時間は 34.5 秒で要件 S を満たす。
| 市町 | タイプ | 町丁数 | 人口総数 | 追加列 |
|---|---|---|---|---|
| 広島市 | 政令市 | 4,325 | 1,200,754 | - |
| 呉市 | 中核市 | 1,569 | 214,592 | - |
| 福山市 | 中核市 | 1,491 | 460,930 | - |
| 東広島市 | 施行時特例市 | 778 | 196,608 | - |
| 廿日市市 | 市 | 537 | 114,173 | - |
| 尾道市 | 市 | 442 | 131,170 | - |
| 三原市 | 市 | 566 | 90,573 | - |
| 竹原市 | 市 | 204 | 23,993 | - |
| 府中市 | 市 | 133 | 37,655 | - |
| 大竹市 | 市 | 151 | 26,319 | - |
| 三次市 | 市 | 394 | 50,681 | - |
| 庄原市 | 市 | 181 | 33,633 | Shape_Area,Shape_Leng |
| 安芸高田市 | 市 | 59 | 26,448 | - |
| 江田島市 | 市 | 169 | 21,930 | - |
| 府中町 | 町 | 87 | 51,155 | - |
| 海田町 | 町 | 94 | 29,636 | - |
| 熊野町 | 町 | 156 | 22,834 | - |
| 坂町 | 町 | 90 | 12,582 | - |
| 北広島町 | 町 | 101 | 17,763 | - |
| 世羅町 | 町 | 61 | 15,125 | - |
この表から読み取れること: 町丁数は広島市の 4,325 件が最多 ─ 政令市 8 区を全て含むため。次が呉市 (1,569)、福山市 (1,491)、東広島市 (778) と続く。中山間 (世羅町・安芸高田市・北広島町) は数十〜百程度の町丁で、人口規模と町丁数はおおむね一致する。庄原市のみ追加列 Shape_Area / Shape_Leng があるが値は 0で、データ生成過程の差異と推定される。
広島県全域の人口ピラミッド (5歳階級 21 階級 × 男女) を 1 枚で描いて、「壺型かどうか」「団塊と団塊ジュニアの二峰があるか」を視覚的・定量的に検証する (仮説 H1)。
直感: 男性を負方向、女性を正方向に水平棒グラフを並べる。横軸 0 を中心線として、左右の伸びで男女比、縦の積み重ねで世代比が見える。
計算ステップ
sum(axis=0) で全県集計 → 21 値plt.barh(y, -M) で男性を負側、plt.barh(y, F) で女性を正側限界: 5 歳階級は男性 95-99, 100+ のように高齢層で人数が急減し、ピラミッド頂点は「ピンの先」のように細る。そのため低齢層の凸部 (団塊・団塊ジュニア) が相対的に強調される。
なぜこの図か: 単一の棒グラフでは年齢分布の形状全体が捉えにくい。ピラミッド (双向横棒) は「人類普遍の人口可視化フォーマット」で、中央の凸部 (団塊・団塊ジュニア) と頂点の収縮が視覚的に伝わる。

この図から読み取れること
| 年齢階級 | 男性 | 女性 | 合計 |
|---|---|---|---|
| 45-49 | 107,066 | 106,811 | 213,877 |
| 70-74 | 98,255 | 109,999 | 208,254 |
| 50-54 | 89,454 | 90,589 | 180,043 |
この表から読み取れること: 上位 3 はすべて 70 歳台 + 団塊ジュニア前後で占められる。「広島県内で人数が最も多い世代は 70 歳台」 ─ これが 21 世紀の日本の人口学的現実。
| 4 群 | 人口 | 構成比 |
|---|---|---|
| 年少 (0-14) | 350,954 | 12.63% |
| 生産年齢 (15-64) | 1,571,057 | 56.54% |
| 前期高齢 (65-74) | 385,754 | 13.88% |
| 後期高齢 (75+) | 415,823 | 14.97% |
| 不詳 | 54,966 | 1.978% |
| 高齢化率 (65+) | 801,577 | 28.85% |
この表から読み取れること: 全県高齢化率は 28.8% ─ WHO の超高齢社会基準 21% を大きく超え、日本全体の R2 高齢化率 28.6% (内閣府 2020) と同水準かやや上。年少率は 12.6% で、年少率 + 後期高齢化率を比較すると後期高齢者 (15.0%) が年少者 (12.6%) を超えている ─ 「14 歳以下より 75 歳以上が多い」社会。
市町ごとに人口ピラミッドの形状はどう違うか? 4 群構成比 (年少/生産/前期高齢/後期高齢) を市町別に並べ、さらに 5 歳階級ピラミッドを 20 panel small multiples で並列比較する。市町間格差 (仮説 H2) と、ピラミッド形状の地理的多様性を一目で見せる。
(a) 4 群構成 stack bar: 市町ごとに 4 群比率を 100% 基準で stack。色の比率の変化で都市↔中山間の構造差を伝える。並び順は人口降順で「大都市から町まで」を見る。
(b) 5 歳階級ピラミッド 20 panels: plt.subplots(4, 5) で 20 panel を作り、各市町のピラミッドを同一スケールで描く。同スケールにすることで「広島市の絶対規模 vs 世羅町の絶対規模」が直感的に伝わる (構成比は別途 4 群 stack で比較済み)。
↑ L22_population_pyramid.py 行 1570–1619
なぜこの図か: 4 群比率を市町間で絶対座標で揃えて並べると、色の境界線の位置で「年少率」「高齢化率」が一目瞭然。都市タイプ別の構造が浮き彫りになる。

この図から読み取れること
なぜこの図か: 4 群構成 stack では分からない『世代別の凸凹』を見るには、5 歳階級ピラミッドが必要。20 panel を同一スケールで並べると、人口規模の絶対差と形状の質的差が同時に見える。

この図から読み取れること
| 市町 | 総人口 | 年少% | 生産% | 前期高齢% | 後期高齢% | 高齢化率 |
|---|---|---|---|---|---|---|
| 江田島市 | 21,885 | 7.57% | 48.69% | 19.27% | 24.47% | 43.74% |
| 庄原市 | 33,428 | 10.28% | 46.10% | 18.35% | 25.26% | 43.61% |
| 世羅町 | 14,795 | 10.56% | 46.58% | 19.01% | 23.86% | 42.87% |
| 竹原市 | 23,851 | 8.91% | 48.82% | 18.80% | 23.47% | 42.27% |
| 安芸高田市 | 26,417 | 9.92% | 48.01% | 18.59% | 23.47% | 42.06% |
| 北広島町 | 17,454 | 10.34% | 50.03% | 17.17% | 22.46% | 39.63% |
| 府中市 | 37,577 | 10.44% | 51.32% | 17.21% | 21.03% | 38.24% |
| 三次市 | 50,069 | 11.88% | 51.30% | 16.36% | 20.46% | 36.82% |
| 尾道市 | 130,288 | 10.99% | 52.45% | 16.78% | 19.79% | 36.57% |
| 大竹市 | 26,240 | 10.90% | 53.26% | 16.30% | 19.54% | 35.85% |
| 三原市 | 90,097 | 11.59% | 52.70% | 16.71% | 19.01% | 35.72% |
| 熊野町 | 22,800 | 12.66% | 51.66% | 16.69% | 18.99% | 35.68% |
| 呉市 | 212,988 | 10.82% | 53.64% | 15.97% | 19.57% | 35.54% |
| 廿日市市 | 113,332 | 13.17% | 55.98% | 15.74% | 15.11% | 30.85% |
| 坂町 | 12,563 | 14.53% | 55.89% | 14.02% | 15.56% | 29.58% |
| 福山市 | 453,205 | 13.38% | 57.45% | 14.25% | 14.92% | 29.16% |
| 広島市 | 1,165,669 | 13.58% | 60.61% | 12.84% | 12.98% | 25.81% |
| 府中町 | 50,741 | 14.82% | 60.41% | 12.08% | 12.69% | 24.77% |
| 東広島市 | 190,721 | 14.02% | 62.00% | 12.08% | 11.90% | 23.98% |
| 海田町 | 29,468 | 14.90% | 61.14% | 12.09% | 11.87% | 23.96% |
この表から読み取れること: 高齢化率トップは 江田島市 43.7%、最低は 海田町 24.0%。差は 19.8%pt、比率では 1.83倍 ─ 仮説 H2 (2倍以上) は 部分支持。後期高齢化率 (75+) でも市町間格差が大きく、中山間の集落の人口構造の脆弱性が分かる。
町丁単位で高齢化率の地理を可視化する。市町平均だけでは見えない「同じ市の中の急激な高齢化勾配」を、choropleth (主題図) と box plot で2 つの角度から定量化する (H3 検証)。
(a) 町丁単位 choropleth: geopandas.plot(column='aging_rate', cmap='RdYlBu_r') で11,588 町丁を高齢化率で色塗り。RdYlBu_r (赤=高齢化高, 青=低) は人口学で標準的な色割り。vmin=0.1 (10%), vmax=0.7 (70%) でクリップして異常値の影響を抑える。人口 0 町丁は灰色で表示。
(b) 市町別 box plot: 各市町の町丁高齢化率 (4,965 件信頼可) を箱ひげで並べる。箱の幅が市町内格差を表し、外れ値の点が極端な町丁を示す。市町タイプで色分け。
↑ L22_population_pyramid.py 行 1712–1757
なぜこの図か: 市町集計では平均化されてしまう町丁単位の局地高齢化を地図で見せたい。RdYlBu_r は左から低 (青) → 中 (黄) → 高 (赤) の diverging palette で、ニュートラルな中央値を境に高低を直感的に伝える。

この図から読み取れること
なぜこの図か: choropleth が地理を見せ、box plot が分布を見せる。両方を提示することで、「市町内格差の大きさ」が定量的に比較できる。市町ごとの『高齢化スペクトル』を一目で。

この図から読み取れること
| 順位 | 市町 | 区 | 町 | 人口 | 高齢化率 | 後期高齢 | 年少率 |
|---|---|---|---|---|---|---|---|
| 1 | 呉市 | 呉市 | 広町 | 194 | 100.0% | 91.2% | 0.0% |
| 2 | 府中市 | 府中市 | 桜が丘三丁目 | 79 | 100.0% | 98.7% | 0.0% |
| 3 | 廿日市市 | 廿日市市 | 対厳山西 | 31 | 96.8% | 83.9% | 0.0% |
| 4 | 三次市 | 三次市 | 山家町 | 562 | 94.7% | 86.3% | 0.0% |
| 5 | 広島市 | 広島市東区 | 福田町 | 74 | 90.5% | 77.0% | 4.0% |
| 6 | 広島市 | 広島市佐伯区 | 坪井三丁目 | 468 | 88.7% | 77.8% | 1.7% |
| 7 | 広島市 | 広島市佐伯区 | 坪井三丁目 | 73 | 87.7% | 75.3% | 1.4% |
| 8 | 三原市 | 三原市 | 円一町二丁目 | 51 | 86.3% | 70.6% | 0.0% |
| 9 | 呉市 | 呉市 | 見晴三丁目 | 55 | 85.5% | 52.7% | 0.0% |
| 10 | 呉市 | 呉市 | 豊浜町大字大浜 | 34 | 85.3% | 61.8% | 0.0% |
この表から読み取れること: 上位は中山間集落で 50-70% ─ 高齢者が町丁の半数超を占める。後期高齢化率も 30-50% で、医療介護需要が極端に高い。年少率はほぼ 0% ─ 子供がいない集落。
| 順位 | 市町 | 区 | 町 | 人口 | 高齢化率 | 後期高齢 | 年少率 |
|---|---|---|---|---|---|---|---|
| 1 | 広島市 | 広島市東区 | 戸坂城山町 | 35 | 0.0% | 0.0% | 31.4% |
| 2 | 広島市 | 広島市南区 | 小磯町 | 403 | 0.0% | 0.0% | 0.0% |
| 3 | 広島市 | 広島市西区 | 草津新町一丁目 | 46 | 0.0% | 0.0% | 26.1% |
| 4 | 広島市 | 広島市安芸区 | 矢野新町二丁目 | 36 | 0.0% | 0.0% | 0.0% |
| 5 | 広島市 | 広島市佐伯区 | 石内北二丁目 | 58 | 0.0% | 0.0% | 43.1% |
| 6 | 広島市 | 広島市安佐南区 | 伴東六丁目 | 57 | 0.0% | 0.0% | 0.0% |
| 7 | 呉市 | 呉市 | 昭和町 | 4303 | 0.0% | 0.0% | 0.0% |
| 8 | 福山市 | 福山市 | 大門町旭 | 261 | 0.0% | 0.0% | 0.0% |
| 9 | 東広島市 | 東広島市 | 西条中央八丁目 | 39 | 0.0% | 0.0% | 15.4% |
| 10 | 江田島市 | 江田島市 | 江田島町津久茂 | 192 | 0.0% | 0.0% | 29.7% |
この表から読み取れること: 下位は新興住宅地や大学・学生街で、高齢化率 5-15%。年少率が 20-30% と高い ─ 子育て世帯の集中スポット。極端に若い町丁と極端に高齢の町丁が県内で同居している。
| 市町 | n | min | q25 | median | q75 | max | max-min |
|---|---|---|---|---|---|---|---|
| 広島市 | 1562 | 0.0 | 19.3 | 25.1 | 33.7 | 90.5 | 90.5 |
| 呉市 | 667 | 0.0 | 31.8 | 40.6 | 49.7 | 100.0 | 100.0 |
| 福山市 | 654 | 0.0 | 23.3 | 29.3 | 37.0 | 78.4 | 78.4 |
| 東広島市 | 268 | 0.0 | 13.9 | 24.8 | 35.0 | 68.5 | 68.5 |
| 廿日市市 | 261 | 2.7 | 23.6 | 31.0 | 40.1 | 96.8 | 94.0 |
| 尾道市 | 225 | 5.9 | 34.9 | 43.7 | 51.0 | 75.4 | 69.5 |
| 三原市 | 258 | 2.3 | 29.9 | 38.2 | 47.5 | 86.3 | 84.0 |
| 竹原市 | 82 | 9.7 | 35.4 | 44.6 | 50.6 | 71.3 | 61.7 |
| 府中市 | 70 | 3.9 | 39.6 | 43.9 | 49.1 | 100.0 | 96.1 |
| 大竹市 | 60 | 9.7 | 30.5 | 39.9 | 48.0 | 77.8 | 68.1 |
| 三次市 | 257 | 12.5 | 32.6 | 42.5 | 50.0 | 94.7 | 82.2 |
| 庄原市 | 143 | 16.0 | 40.3 | 48.9 | 54.3 | 76.6 | 60.6 |
| 安芸高田市 | 52 | 27.9 | 36.3 | 43.1 | 51.4 | 79.1 | 51.2 |
| 江田島市 | 59 | 0.0 | 40.9 | 50.3 | 56.7 | 73.8 | 73.8 |
| 府中町 | 62 | 9.2 | 20.1 | 24.0 | 28.4 | 43.5 | 34.3 |
| 海田町 | 43 | 11.6 | 19.5 | 24.3 | 31.4 | 41.9 | 30.3 |
| 熊野町 | 90 | 17.7 | 28.7 | 38.6 | 45.9 | 84.0 | 66.3 |
| 坂町 | 29 | 6.0 | 28.5 | 36.0 | 40.8 | 50.9 | 44.9 |
| 北広島町 | 80 | 10.1 | 37.4 | 45.9 | 51.0 | 75.7 | 65.5 |
| 世羅町 | 43 | 22.6 | 38.0 | 45.5 | 51.1 | 63.0 | 40.4 |
この表から読み取れること: max-min の最大値は 100.0%pt (その市町内で町丁により 〜70%pt の差があり得る)。『市町平均が同じでも町丁分布は全く違う』 ─ 高齢化施策は市町単位ではなく町丁単位で設計すべき強い証拠。
町丁単位の人口密度 (人/km²) を log スケール choropleth で可視化、都市部 vs 中山間の構成比ピラミッド (絶対人口で揃えず割合で比較) を作り、「日本社会の二極構造」を地理的に検証する。
(a) 人口密度 choropleth (log): 町丁面積 = geometry.area / 1e6 (km²)、密度 = JINKO_SU / area_km2。広島市デルタの 1万人/km² と 中山間の 0.1人/km² が同レンジに入るのでlog10で。
(b) 構成比ピラミッド (都市 vs 中山間): 都市 = 広島市・福山市・東広島市、中山間 = 庄原市・北広島町・世羅町・安芸高田市。両群の絶対規模が違うため、各 5 歳階級を 各群の総人口で割って構成比に。両ピラミッドの x 軸を同一スケールに揃えて形状の質的差を見る。
↑ L22_population_pyramid.py 行 273–310
なぜこの図か: 線形スケールでは広島市デルタの黒一色になってしまう。log スケールにすることで、0.1 人/km² の山林と 1 万人/km² のデルタが同じ地図に意味のあるグラデーションで載る。

この図から読み取れること
なぜこの図か: 絶対人口では都市部 (1,809,595) >> 中山間 (92,094) で形状比較ができない。各群内で 100% 正規化することで形状の質的差を直接比較する。

この図から読み取れること
性比 (M/F×100) と 40歳未満比率の地理を見て、男女比に偏りを生む施設 (大学・基地・工場・刑務所 等) と若年集中スポット (新興住宅地・学生街) を町丁レベルで同定する (H4 検証)。
(a) 性比 choropleth: 信頼可町丁のみ。色 = RdBu_r (青=女性多, 赤=男性多)、vmin=80, vmax=120。極端な異常値は表で別記する (clip して地図はノイズ抑制)。
(b) 40 歳未満比率 choropleth: 0-4, 5-9, ..., 35-39 歳の合計 / 総人口。cmap='YlGn' (薄黄→濃緑)、vmin=0.20, vmax=0.65。上位 5 町丁にラベル。
なぜこの図か: 性比の異常は『そこに何があるか』を示す指紋。RdBu_r palette は 100 を中心に偏向方向を直感的に伝える。

この図から読み取れること
なぜこの図か: 高齢化マップだけでは「どこに若者がいるのか」が逆方向で見えにくい。40 歳未満比率を直接マッピングすることで、若年集中スポットを地理的に同定する。

この図から読み取れること
| 順位 | 市町 | 区 | 町 | 人口 | 男 | 女 | 性比 |
|---|---|---|---|---|---|---|---|
| 1 | 福山市 | 福山市 | 大門町旭 | 261 | 261 | 0 | 26100.0 |
| 2 | 東広島市 | 東広島市 | 八本松飯田六丁目 | 65 | 64 | 1 | 6400.0 |
| 3 | 広島市 | 広島市東区 | 戸坂城山町 | 35 | 35 | 0 | 3500.0 |
| 4 | 呉市 | 呉市 | 昭和町 | 4303 | 4128 | 175 | 2358.9 |
| 5 | 東広島市 | 東広島市 | 八本松飯田二丁目 | 86 | 82 | 4 | 2050.0 |
| 6 | 江田島市 | 江田島市 | 江田島町中央 | 460 | 428 | 32 | 1337.5 |
| 7 | 福山市 | 福山市 | 引野町南二丁目 | 462 | 429 | 33 | 1300.0 |
| 8 | 江田島市 | 江田島市 | 江田島町中央 | 611 | 563 | 48 | 1172.9 |
| 9 | 広島市 | 広島市南区 | 宇品町 | 72 | 65 | 7 | 928.6 |
| 10 | 広島市 | 広島市安芸区 | 矢野町 | 682 | 614 | 68 | 902.9 |
この表から読み取れること: 性比 200 超の異常値 (男性が女性の 2 倍超) も存在する。JINKO_SU が小さい町丁 (人口 30-100) で外れ値が多く、大学男子寮や自衛隊基地、工場社員寮、外国人就労者集住地区等の施設シグナルと考えられる。町丁名 (TOWN_NAME) に「大学」「基地」のキーワードがある場合は施設由来確定。
| 順位 | 市町 | 区 | 町 | 人口 | 男 | 女 | 性比 |
|---|---|---|---|---|---|---|---|
| 1 | 広島市 | 広島市安佐北区 | 可部東一丁目 | 90 | 0 | 90 | 0.0 |
| 2 | 廿日市市 | 廿日市市 | 木材港北 | 33 | 1 | 32 | 3.1 |
| 3 | 呉市 | 呉市 | 焼山町 | 31 | 3 | 28 | 10.7 |
| 4 | 府中市 | 府中市 | 桜が丘三丁目 | 79 | 10 | 69 | 14.5 |
| 5 | 広島市 | 広島市佐伯区 | 五月が丘四丁目 | 54 | 7 | 47 | 14.9 |
| 6 | 広島市 | 広島市南区 | 宇品海岸一丁目 | 72 | 11 | 61 | 18.0 |
| 7 | 呉市 | 呉市 | 青山町 | 123 | 19 | 104 | 18.3 |
| 8 | 広島市 | 広島市西区 | 中広町二丁目 | 70 | 14 | 56 | 25.0 |
| 9 | 広島市 | 広島市安佐北区 | 真亀一丁目 | 90 | 18 | 72 | 25.0 |
| 10 | 江田島市 | 江田島市 | 江田島町小用三丁目 | 60 | 12 | 48 | 25.0 |
この表から読み取れること: 性比 50-70 (男性が女性の半分前後) は女性のほうが圧倒的に多い町丁。看護学校・女子寮・福祉施設・高齢化集落 (女性長寿) 等が想定される。高齢化集落由来の場合は同時に高齢化率も高くなる。
| 順位 | 市町 | 区 | 町 | 人口 | 40歳未満% | 高齢化率 | 性比 |
|---|---|---|---|---|---|---|---|
| 1 | 広島市 | 広島市東区 | 戸坂城山町 | 35 | 100.0% | 0.0% | 3500.0 |
| 2 | 広島市 | 広島市安佐南区 | 伴東六丁目 | 57 | 100.0% | 0.0% | 58.3 |
| 3 | 広島市 | 広島市南区 | 小磯町 | 403 | 96.5% | 0.0% | 594.8 |
| 4 | 福山市 | 福山市 | 引野町南二丁目 | 462 | 90.3% | 3.5% | 1300.0 |
| 5 | 江田島市 | 江田島市 | 江田島町中央 | 460 | 89.1% | 1.3% | 1337.5 |
| 6 | 広島市 | 広島市佐伯区 | 石内北二丁目 | 58 | 87.9% | 0.0% | 87.1 |
| 7 | 廿日市市 | 廿日市市 | 木材港北 | 33 | 87.9% | 9.1% | 3.1 |
| 8 | 江田島市 | 江田島市 | 江田島町中央 | 611 | 87.7% | 1.6% | 1172.9 |
| 9 | 広島市 | 広島市佐伯区 | 石内北三丁目 | 331 | 86.1% | 0.3% | 119.2 |
| 10 | 広島市 | 広島市佐伯区 | 石内東二丁目 | 426 | 85.5% | 1.4% | 120.7 |
この表から読み取れること: 上位は40歳未満比率50-65%。同時に高齢化率は 5-10%と低く、性比が 100-130と男性寄りの町丁も多い ─ 学生街 (男子学生比率) や寮の特徴。東広島市西条や広島市の大学周辺町丁が多い。
100 歳以上人口の絶対数 vs 人口比の地理的不一致を検証 (H6)、そして高齢化率と後期高齢化率/年少率の 2 軸散布で市町タイプ間の構造的関係を可視化する。
(a) 100歳以上 マップ + ランキング: 市町単位で M_100+F_100 を集計、絶対数を choropleth、人口比 (per 10,000) を横棒で並列。
(b) 2 軸散布: 市町を点として配置、左 panel = 高齢化率 × 後期高齢化率、右 panel = 高齢化率 × 年少率 (反相関の検証)。都市タイプで色分け。
↑ L22_population_pyramid.py 行 2058–2079
なぜこの図か: 単一指標 (高齢化率) では市町構造を一次元でしか見られない。2 つの指標を直交させた 2D 平面に置くと、都市タイプの『指紋』が点群の塊として見える。

この図から読み取れること
なぜこの図か: 100 歳以上は長寿の象徴であり、高齢化率とは独立した指標 (ある町は高齢化率は高いが 100歳超は少ない、別の町は逆) になりうる。地図と棒の2 軸提示で全体像。

この図から読み取れること
| 市町 | タイプ | 総人口 | 100歳以上 | per 10k | 高齢化率 | 後期高齢 |
|---|---|---|---|---|---|---|
| 安芸高田市 | 市 | 26,448 | 67 | 25.33 | 42.01% | 23.44% |
| 庄原市 | 市 | 33,633 | 74 | 22.00 | 43.35% | 25.11% |
| 三次市 | 市 | 50,681 | 92 | 18.15 | 36.38% | 20.22% |
| 江田島市 | 市 | 21,930 | 38 | 17.33 | 43.65% | 24.42% |
| 竹原市 | 市 | 23,993 | 34 | 14.17 | 42.02% | 23.33% |
| 北広島町 | 町 | 17,763 | 24 | 13.51 | 38.94% | 22.07% |
| 世羅町 | 町 | 15,125 | 20 | 13.22 | 41.93% | 23.34% |
| 府中市 | 市 | 37,655 | 45 | 11.95 | 38.16% | 20.99% |
| 三原市 | 市 | 90,573 | 95 | 10.49 | 35.53% | 18.91% |
| 呉市 | 中核市 | 214,592 | 222 | 10.35 | 35.28% | 19.43% |
| 尾道市 | 市 | 131,170 | 130 | 9.91 | 36.32% | 19.65% |
| 大竹市 | 市 | 26,319 | 26 | 9.88 | 35.74% | 19.48% |
| 坂町 | 町 | 12,582 | 12 | 9.54 | 29.53% | 15.54% |
| 熊野町 | 町 | 22,834 | 17 | 7.45 | 35.63% | 18.96% |
| 福山市 | 中核市 | 460,930 | 342 | 7.42 | 28.67% | 14.67% |
| 廿日市市 | 市 | 114,173 | 81 | 7.09 | 30.62% | 15.00% |
| 東広島市 | 施行時特例市 | 196,608 | 128 | 6.51 | 23.26% | 11.55% |
| 広島市 | 政令市 | 1,200,754 | 753 | 6.27 | 25.06% | 12.60% |
| 海田町 | 町 | 29,636 | 16 | 5.40 | 23.83% | 11.80% |
| 府中町 | 町 | 51,155 | 27 | 5.28 | 24.57% | 12.59% |
この表から読み取れること: 100歳以上 per 10k と高齢化率は正の相関するが完全一致ではない。100 歳以上は高齢化の『極限指標』であり、急性期高齢化 (団塊世代) よりも慢性的長寿構造を反映する。
| 順位 | 市町 | 区 | 町 | 人口 | 100歳以上 | per 10k | 高齢化率 |
|---|---|---|---|---|---|---|---|
| 1 | 広島市 | 広島市安佐北区 | 落合南町 | 145 | 5 | 344.8 | 63.5% |
| 2 | 呉市 | 呉市 | 広町 | 194 | 5 | 257.7 | 100.0% |
| 3 | 庄原市 | 庄原市 | 掛田町 | 161 | 4 | 248.4 | 62.1% |
| 4 | 江田島市 | 江田島市 | 江田島町宮ノ原三丁目 | 121 | 3 | 247.9 | 69.4% |
| 5 | 呉市 | 呉市 | 安浦町安登西五丁目 | 252 | 6 | 238.1 | 69.0% |
| 6 | 広島市 | 広島市佐伯区 | 坪井三丁目 | 468 | 11 | 235.0 | 88.7% |
| 7 | 三次市 | 三次市 | 山家町 | 562 | 13 | 231.3 | 94.7% |
| 8 | 呉市 | 呉市 | 下蒲刈町下島 | 130 | 3 | 230.8 | 58.5% |
| 9 | 庄原市 | 庄原市 | 尾引町 | 218 | 5 | 229.4 | 76.6% |
| 10 | 安芸高田市 | 安芸高田市 | 八千代町土師 | 231 | 5 | 216.5 | 53.7% |
この表から読み取れること: 上位町丁の per 10k は200-1000 ─ 全県平均の 5-30 倍。ほぼ全てが小規模町丁 (人口 100-300) で、長寿者数人で per 10k が跳ね上がる。大数の法則の限界を示す事例で、信頼可は ≥100 にした上での値。
都市計画区域コード KUIKI_CD (1=市街化, 3=市街化調整, 5=都計外 等) 別に町丁を集計し、区域別の人口構造がどう違うかを観察する。性別年齢別人口データ単体で完結するクロス分析で、L17 用途地域・L19 居住誘導との相補的視点。
各町丁に付与されている KUIKI_CD でグループ化、4 群人口集計 → 区域別 高齢化率・年少率を計算。シェアと率の両方を表で提示。
| 区域 | 町丁数 | 人口 | シェア | 高齢化率 | 年少率 |
|---|---|---|---|---|---|
| 市街化区域 | 3,692 | 2,204,793 | 79.35% | 26.00% | 13.32% |
| 区域不明 | 757 | 190,733 | 6.86% | 46.64% | 8.18% |
| 用途白地等 | 617 | 176,063 | 6.34% | 33.62% | 11.82% |
| 市街化調整区域 | 398 | 125,122 | 4.50% | 37.02% | 10.65% |
| 4 | 445 | 79,737 | 2.87% | 41.47% | 9.15% |
| 都市計画区域外 | 3 | 1,919 | 0.07% | 40.59% | 8.44% |
| 6 | 4 | 187 | 0.01% | 58.82% | 5.88% |
この表から読み取れること
分析 1〜8 の結果から、仮説 H1〜H6 を改めて検証する。
| 仮説 | 仮説内容 | 検証結果 | 判定 |
|---|---|---|---|
| H1 | 全県ピラミッドは『団塊+団塊ジュニア』の二峰 + 若年細る『壺型』 | 団塊 (70-74): 208,254, 団塊ジュニア (45-49): 213,877, 0-4歳: 104,653 (若年層は団塊の 50.3%) | 支持 |
| H2 | 市町間 高齢化率の最大/最小 ≥ 2倍 | max=江田島市 43.6%, min=東広島市 23.3%, ratio=1.88x | 部分支持 |
| H3 | 町丁単位の高齢化率は同市内で30%pt以上の格差 | 市町内 max-min の最大値 = 100.0%pt | 支持 |
| H4 | 性比 >110 (男性集中) の異常町丁が 5件以上 | >110 男性異常 511 件, <90 女性異常 1914 件 (信頼可=4,965町丁) | 支持 |
| H5 | 後期高齢化率トップは中山間市町 | top=庄原市 25.1%, min=N/A 11.6% | 支持 |
| H6 | 100歳以上 絶対数top と 人口比top は別の市町 | 絶対数 top: 広島市, 人口比 top: 安芸高田市 | 支持 |
本記事で得られた結果から導かれる新たな問いと、 それを検証するための具体的な発展手順を 3 つ提示する。
結果 X: 都市計画区域 (KUIKI_CD) 別の高齢化率は階層的だが、 「区域」は政策意図の反映で、実際の都市性とは別物。 DID 地区境界 (人口集中地区, 4,000人/km² 超のメッシュ集合) は実態的な都市域を示す。
新仮説 Y: DID 内町丁の高齢化率は DID 外町丁の高齢化率より10%pt 以上低く、 若年率は 5%pt 以上高い。「人口集中地区」は構造的に若い。 中山間市町でも DID 内 (中心市街地) と DID 外 (集落) で構造が分裂する。
課題 Z: 次記事 L23 (DID 14件統合) で実装。
geopandas.sjoin(pop, did_polys, how='left', predicate='intersects') で
町丁に DID 内/外フラグを付与し、4 群構成・高齢化率を DID 内外でクロス比較。
人口ピラミッド DID 内 vs 外 small multiples を 14 市町で並べる。
結果 X: 性比 200+ の町丁が複数同定されたが、 本記事では「大学・基地・工場と推定」と止まっている。
新仮説 Y: 性比 110+ の町丁を OpenStreetMap の amenity ノード (大学・自衛隊・刑務所・工場) と空間結合すると、80% 以上が施設の半径 500m 以内に位置する。 施設由来の男女比偏向が町丁スケールで再現できる。
課題 Z: OSM データから広島県の amenity=university, military, prison,
landuse=industrial を取得 → 町丁中心点との BallTree 最近傍距離計算 →
性比×最近傍距離の散布図。性比異常町丁の上位 20 件について施設名を地名照合で同定し、
教材付録として「性比からの施設発見手順」を構築。
結果 X: 本記事は R2 (2020) 国勢調査ベースの 1 時点スナップショット。 人口減少社会では、5 年前との差分が政策上重要。
新仮説 Y: 高齢化率の5 年前比 +5%pt 以上の町丁は、中山間集落に集中する。 都市部は -1%pt 〜 +2%pt 程度の小幅変化に留まり、地理的二極化が時間とともに拡大している。
課題 Z: 政府統計 e-Stat から H27 (2015) 国勢調査 小地域 性別年齢別人口を取得 → SMALL_A_CD で町丁マッチング → 高齢化率 5年前比 (Δaging_rate) を計算 → choropleth で「過去5年で高齢化が進んだ町丁マップ」。 『高齢化進行スピード』の地理を可視化することで、 人口減少社会の動態が初めて見える。R7 (2025) の結果が出れば直近10年の3点比較も可能。