サンプルデータの取得と整形

Prep

サンプルデータの取得と整形

作成日: 最終更新: 読了時間: 1 分

使うデータとライセンス #

Notebook / Python スクリプトで扱うときは、

  1. ダウンロードした元ファイル(CSV・Excel)を data/raw/ に置く
  2. 整形後のファイルを data/processed/ に書き出す
  3. ライセンス表記・入手先 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 例で利用します。