99log-quarto-0001.pdf

142 Views

June 03, 26

スライド概要

Zenn記事"99log-quarto-0001"リンク用

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.
[beta]
Quarto ドキュメント テスト
「令和7年国勢調査 人口速報集計」による都道府県別人口増減の把握

九十九

ログ

2026年06月03⽇

1 概要
本ドキュメントは、Quartoを用いたデータ分析レポートの作成テストである。 今回はe‒statから公開されて
いる令和7年国勢調査の速報データを用い、Pandasによるテーブルの出⼒と、matplotlibによるグラフの描画
の動作を確認する。

2 前提
2.1 Pythonとパッケージ
前提として、表 1 の通り、Pythonと各パッケージがインストール済みであることとする。
import sys
import numpy as np
import pandas as pd
import openpyxl
import matplotlib as mpl
import seaborn as sns
pkg_names = ['Python', 'numpy', 'pandas', 'openpyxl','matplotlib', 'seaborn', ]
pkg_versions = [sys.version.split('|')[0].strip(), np.__version__, pd.__version__, openpyxl.__version__,
↪
mpl.__version__, sns.__version__]
pd.DataFrame({'Name':pkg_names, 'Versions':pkg_versions,}).style.hide(axis="index")

表 1: インストール済みパッケージ⼀覧
表1
Name

Versions

Python
numpy
pandas
openpyxl

3.13.13
2.4.6
3.0.3
3.1.5

1

2.

Name Versions matplotlib seaborn 3.10.9 0.13.2 INFO インストールに使用したコマンド 今回はminiforgeで構築した仮想環境を使用したため、以下のコマンドでインストールした。 mamba install numpy pandas matplotlib seaborn openpyxl 2.2 フォントとデータ格納場所 予め、IPAexフォントと令和7年国勢調査 ⼈⼝速報集計のExcelデータをそれぞれ以下の場所に格納してお く。 • IPAexフォント – quartoプロジェクトフォルダのfontsフォルダに、ipaexg.ttfとipaexm.ttfを格納する。 • 「令和7年国勢調査 ⼈⼝速報集計」Excel – quartoプロジェクトフォルダと同じディレクトリに、e-stat\R7_kokusei_sokuhou_a01.xlsxを格納 する。 LIGHTBULB 想定するディレクトリ構造 ./ ├── e-stat/ │ └── R7_kokusei_sokuhou_a01.xlsx └── 【quartoプロジェクトフォルダ】/ ├── fonts/ │ ├── ipaexg.ttf │ └── ipaexm.ttf └── 【このqmdファイル】.qmd 3 データの概要と前処理 本レポートでは、e‒statからダウンロードした令和7年国勢調査 ⼈⼝速報集計のExcelデータを基に、⽇本の ⼈⼝動態、特に都道府県単位における⼈⼝増減の傾向を分析する。 import pandas as pd # データの読み込み(上部のメタデータ行をスキップ) df = pd.read_excel('../e-stat/R7_kokusei_sokuhou_a01.xlsx', sheet_name='a01', skiprows=8, ↪ header=[0,1,2,3,4]) 2

3.

# 列名の再定義 df.columns = [ 'level', 'pref', 'municipality', 'p_r7', 'p_male', 'p_female', 'p_r2_adjusted', 'p_diff', 'p_growth_rate', 'sex_ratio', 'h_r7', 'h_r2_adjusted', 'h_diff', 'h_growth_rate', 'area', 'density' ] # 都道府県単位のデータのみを抽出(全国および市区町村を除外) # 都道府県コード(2桁)+「_都道府県名」の形式、および「全国」等のパターンからフィルタリング df_pref = df[df['municipality'].str.contains('_都道府県|県$|府$|都$', na=False)].copy() # 型の変換とクレンジング df_pref['p_growth_rate'] = pd.to_numeric(df_pref['p_growth_rate'], errors='coerce') df_pref['p_diff'] = pd.to_numeric(df_pref['p_diff'], errors='coerce') df_pref['p_r7'] = pd.to_numeric(df_pref['p_r7'], errors='coerce') df_pref['p_male'] = pd.to_numeric(df_pref['p_male'], errors='coerce') df_pref['p_female'] = pd.to_numeric(df_pref['p_female'], errors='coerce') 3.1 定義・計算式 本レポートで用いる主要な指標の定義は下記の通りである。 3.1.1 人口増減率 (𝑅) 令和2年の組替⼈⼝を 𝑃 ̲2、令和7年の速報⼈⼝を 𝑃 ̲7 としたとき、5年間の⼈⼝増減率 𝑅 (%) は 式( 1) で算定される。 𝑅= 𝑃 ̲7 − 𝑃 ̲2 × 100 𝑃 ̲2 (1) 3.1.2 人口性比 (𝑆 ) ⼥性100⼈に対する男性の数を示す⼈⼝性⽐ 𝑆 は、男性⼈⼝を 𝑀 、⼥性⼈⼝を 𝐹 としたとき、 式( 2) で 定義される。 𝑆= 𝑀 × 100 𝐹 (2) 3.2 都道府県別の人口動態分析 3.2.1 人口増減数の大きい都道府県 令和2年から令和7年にかけて、⼈⼝増減数(増加および減少)の絶対値が⼤きい上位5位までの都道府県は それぞれ、 表 2 と 表 3 の通りである。 3

4.
[beta]
# 増加上位5件
top5_inc = df_pref.sort_values(by='p_diff', ascending=False).head(5)
# 1始まりの連番をインデックスに代入
top5_inc.index = range(1, 6)
top5_inc[['pref', 'p_r7', 'p_diff', 'p_growth_rate']]

表 2: ⼈⼝増加数 上位5都道府県

1
2
3
4
5

pref

p̲r7

p̲diff

p̲growth̲rate

13̲東京都
47̲沖縄県
25̲滋賀県
12̲千葉県
31̲⿃取県

14246219
1468220
1392439
6258512
523732

198621
740
‒21171
‒25968
‒29675

1.41391
0.05043
‒1.49765
‒0.41321
‒5.36224

# 減少上位5件
top5_dec = df_pref.sort_values(by='p_diff', ascending=True).head(5)
top5_dec.index = range(1, 6)
top5_dec[['pref', 'p_r7', 'p_diff', 'p_growth_rate']]

表 3: ⼈⼝減少数 下位5都道府県

1
2
3
4
5

pref

p̲r7

p̲diff

p̲growth̲rate

22̲静岡県
28̲兵庫県
15̲新潟県
07̲福島県
34̲広島県

3468845
5323825
2068476
1711937
2683399

‒164357
‒141177
‒132796
‒121215
‒116303

‒4.52375
‒2.58329
‒6.03269
‒6.61238
‒4.15412

3.2.2 人口増減率の比較

各都道府県における⼈⼝増減率(%)のトップ5およびワースト5を抽出し、可視化した結果を 図 1 に示
す。
from pathlib import Path
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt
import seaborn as sns
# 日本語化設定
fpath = Path('fonts/ipaexg.ttf')
if not fpath.exists():
print(f"Warning: Font not found at {fpath}")
fm.fontManager.addfont(fpath) #フォントをmatplotlibに明示的に追加
prop = fm.FontProperties(fname=fpath) #追加したフォントのプロパティを取得
plt.rcParams['font.family'] = prop.get_name()

4

5.

# マイナス記号が文字化けするのを防ぐ設定 plt.rcParams['axes.unicode_minus'] = False # 上位と下位の結合 target_prefs = pd.concat([ df_pref.sort_values(by='p_growth_rate', ascending=False).head(5), df_pref.sort_values(by='p_growth_rate', ascending=True).head(5) ]).sort_values(by='p_growth_rate') plt.figure(figsize=(10, 6)) bars = plt.barh(target_prefs['pref'], target_prefs['p_growth_rate'], color='lightseagreen', height=0.6) # 減少している地域(マイナス値)のバーの色を変更 for bar in bars: if bar.get_width() < 0: bar.set_color('salmon') # 5位と6位の間に垂直線を引く(境界線) # 10個のデータがあるため、インデックス4.5(中央)に配置 plt.axhline(y=4.5, color='gray', linestyle='--', linewidth=1) # 0%のラインを強調する垂直線を追加 plt.axvline(x=0, color='black', linestyle='-', linewidth=0.8, alpha=0.5) plt.xlabel('5年間の人口増減率 (%)') plt.ylabel('都道府県') plt.title('都道府県別の人口増減率トップ&ワースト5') plt.grid(axis='x', linestyle='--', alpha=0.5) plt.tight_layout() plt.show() 5

6.

5 13_ 47_ 12_ 14_ 11_ 39_ 06_ 03_ 02_ 05_ -8 -6 5 -4 (%) -2 0 図 1: 令和7年国勢調査速報に基づく⼈⼝増減率の⽐較(上位・下位5都道府県) 4 総括 本速報集計データの分析結果より、特定の都市圏や都道府県への⼈⼝集中、および地⽅部における⼈⼝減少 の継続という、⼆極化の傾向が数値および視覚的データによって確認された。 5 出典・参考文献 データ出典: 総務省統計局「令和7年国勢調査 ⼈⼝速報集計(全国、都道府県、市区町村別⼈⼝及び世帯 数)」 以上 6