使うデータとライセンス #
- 出典: 総務省「地方財政白書」公開資料
- URL: https://www.soumu.go.jp/menu_seisaku/hakusyo/chihou/
- 利用条件: 二次利用可。出典明記と利用ルールへの同意が必要。
Notebook / Python スクリプトで扱うときは、
- ダウンロードした元ファイル(CSV・Excel)を
data/raw/に置く - 整形後のファイルを
data/processed/に書き出す - ライセンス表記・入手先 URL を README か Notebook 冒頭に記載する
といった運用にしておくと再現性のあるデータ基盤になります。
1. ダウンロードとヘッダー整形 #
import pandas as pd
from pathlib import Path
RAW = Path("../data/raw")
PROCESSED = Path("../data/processed")
RAW.mkdir(parents=True, exist_ok=True)
PROCESSED.mkdir(parents=True, exist_ok=True)
src = RAW / "soumu-gdp.csv"
df_raw = pd.read_csv(src, header=None)
df_raw.head()
多くの公開資料は「1 行目=タイトル」「2 行目=単位」といった構成になっています。header=None で読み込んでから、必要な行をヘッダーに差し替えます。
header = df_raw.iloc[1].ffill()
df = (
df_raw
.iloc[2:] # データ本体のみ
.set_axis(header, axis=1) # ヘッダーに置き換え
.rename(columns={"Unnamed: 0": "カテゴリ"})
.replace("△", "-", regex=True)
.replace("-", 0)
)
df.head()
Column 名の正規化 #
df.columns = (
df.columns
.str.strip()
.str.replace(" ", "")
.str.replace("(", "(")
.str.replace(")", ")")
)
日本語列をそのまま残す場合でも、全角スペースや括弧揺れを先に揃えておくと後続処理が安定します。
2. 型の見直し・基本統計 #
numeric_cols = df.columns.drop(["カテゴリ"])
df[numeric_cols] = df[numeric_cols].apply(pd.to_numeric, errors="coerce")
profile = (
df.describe()
.T.loc[:, ["count", "mean", "std", "min", "max"]]
.round(2)
)
profile.head()
errors="coerce"で数値化できないセルをNaNに。describe().Tで列方向の統計を一覧化し、欠損や桁違いを早期発見。
欠損の所在は df[numeric_cols].isna().sum() でチェックし、補完方針を決めます。
3. 保存とメタデータ #
output = PROCESSED / "soumu-gdp-clean.csv"
df.to_csv(output, index=False, encoding="utf-8-sig")
metadata = {
"source": "総務省 地方財政白書",
"downloaded_at": "2024-05-30",
"columns": df.columns.tolist(),
"notes": "△ を - (マイナス) に置換。欠損は 0 に置換済み。"
}
整形後の CSV と一緒にメタデータ(取得日、加工内容、単位)を JSON で残しておくと、将来の再取得・差分チェックが容易になります。
4. Notebook での表示ユーティリティ(任意) #
from IPython.display import display, HTML
def show(df, title):
display(HTML(f"<h3>{title}</h3>"))
display(df)
display(HTML("<hr>"))
show(df.head(), "加工後の先頭 5 行")
大きなテーブルでも今回追加した .table-scroll スタイルにより横スクロールで閲覧できます。
チェックリスト #
- 出典 URL と利用条件を Notebook / レポートに明記した
- 整形プロセスをスクリプト化し、再実行しても同じ結果になる
- ヘッダー・単位のズレを修正し、日本語列名も統一した
- オリジナルと加工後どちらも保存し、ファイル名規約を決めた
- 欠損値・型変換ログをメタデータとして残した
このページで作成した soumu-gdp-clean.csv は、後続の pandas / SQL 例で利用します。