---
title: 99log-quarto-0001.pdf
tags: 
author: [tsukumo.log](https://image.docswell.com/user/tsukumo-log)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/47MYXW6V7W.jpg?width=480
description: Zenn記事&quot;99log-quarto-0001&quot;リンク用
published: June 03, 26
canonical: https://image.docswell.com/s/tsukumo-log/5WR4DY-2026-06-03-152709
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/47MYXW6V7W.jpg)

Quarto ドキュメント テスト
「令和７年国勢調査 人口速報集計」による都道府県別人口増減の把握
九十九
ログ
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 = [&#039;Python&#039;, &#039;numpy&#039;, &#039;pandas&#039;, &#039;openpyxl&#039;,&#039;matplotlib&#039;, &#039;seaborn&#039;, ]
pkg_versions = [sys.version.split(&#039;|&#039;)[0].strip(), np.__version__, pd.__version__, openpyxl.__version__,
↪
mpl.__version__, sns.__version__]
pd.DataFrame({&#039;Name&#039;:pkg_names, &#039;Versions&#039;:pkg_versions,}).style.hide(axis=&quot;index&quot;)
表 1: インストール済みパッケージ⼀覧
表1
Name
Versions
Python
numpy
pandas
openpyxl
3.13.13
2.4.6
3.0.3
3.1.5
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/P7R9NYPWE9.jpg)

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(&#039;../e-stat/R7_kokusei_sokuhou_a01.xlsx&#039;, sheet_name=&#039;a01&#039;, skiprows=8,
↪
header=[0,1,2,3,4])
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/PJXQNG3V7X.jpg)

# 列名の再定義
df.columns = [
&#039;level&#039;, &#039;pref&#039;, &#039;municipality&#039;, &#039;p_r7&#039;, &#039;p_male&#039;, &#039;p_female&#039;,
&#039;p_r2_adjusted&#039;, &#039;p_diff&#039;, &#039;p_growth_rate&#039;, &#039;sex_ratio&#039;,
&#039;h_r7&#039;, &#039;h_r2_adjusted&#039;, &#039;h_diff&#039;, &#039;h_growth_rate&#039;,
&#039;area&#039;, &#039;density&#039;
]
# 都道府県単位のデータのみを抽出（全国および市区町村を除外）
# 都道府県コード（2桁）＋「_都道府県名」の形式、および「全国」等のパターンからフィルタリング
df_pref = df[df[&#039;municipality&#039;].str.contains(&#039;＿都道府県|県$|府$|都$&#039;, na=False)].copy()
# 型の変換とクレンジング
df_pref[&#039;p_growth_rate&#039;] = pd.to_numeric(df_pref[&#039;p_growth_rate&#039;], errors=&#039;coerce&#039;)
df_pref[&#039;p_diff&#039;] = pd.to_numeric(df_pref[&#039;p_diff&#039;], errors=&#039;coerce&#039;)
df_pref[&#039;p_r7&#039;] = pd.to_numeric(df_pref[&#039;p_r7&#039;], errors=&#039;coerce&#039;)
df_pref[&#039;p_male&#039;] = pd.to_numeric(df_pref[&#039;p_male&#039;], errors=&#039;coerce&#039;)
df_pref[&#039;p_female&#039;] = pd.to_numeric(df_pref[&#039;p_female&#039;], errors=&#039;coerce&#039;)
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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/3JK9N4Y5JD.jpg)

# 増加上位5件
top5_inc = df_pref.sort_values(by=&#039;p_diff&#039;, ascending=False).head(5)
# 1始まりの連番をインデックスに代入
top5_inc.index = range(1, 6)
top5_inc[[&#039;pref&#039;, &#039;p_r7&#039;, &#039;p_diff&#039;, &#039;p_growth_rate&#039;]]
表 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=&#039;p_diff&#039;, ascending=True).head(5)
top5_dec.index = range(1, 6)
top5_dec[[&#039;pref&#039;, &#039;p_r7&#039;, &#039;p_diff&#039;, &#039;p_growth_rate&#039;]]
表 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(&#039;fonts/ipaexg.ttf&#039;)
if not fpath.exists():
print(f&quot;Warning: Font not found at {fpath}&quot;)
fm.fontManager.addfont(fpath) #フォントをmatplotlibに明示的に追加
prop = fm.FontProperties(fname=fpath) #追加したフォントのプロパティを取得
plt.rcParams[&#039;font.family&#039;] = prop.get_name()
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LE3WVL91E5.jpg)

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


# Page. 6

![Page Image](https://bcdn.docswell.com/page/8EDK8NGK7G.jpg)

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


