用代码读企划:从政府CSV到可用API的实务检验

どうも〜おかむーです!今天来聊聊政府公开数据和工程实践,带点程序员视角,轻松又实务。
- 这些政府CSV真的比PDF好用很多,但仍有编码、字段不统一的问题
- Japan Dashboard、e-Stat、各省厅CSV能做出可复现的指标链条,不过需要清洗与API化
- 政策目标要跟数据绑定,代码/Schema 才能把承诺变成可验证的事实
結論
总体来说,近年来日本各机关在「把数据放成CSV」上进步明显(参考:digital.go.jp、e-stat、notice.go.jp的CSV资源),但要把这些数据变成能被政策验证和持续监控的基础设施,还差在:统一schema、稳定API、版本化与机读元数据。要解决这些问题,既要技术实现(编码/接口/验证),也要政策设计(把KPI跟数据源绑定)。
报告正文
现状观察 — 具体数据源举例
これ見てくださいよ:
- https://notice.go.jp/docs/status_notice.csv:政府公告状态CSV,说明政府尝试提供机读列表,这是好事情!
- digital.go.jp 的 Japan Dashboard(https://www.digital.go.jp/resources/japandashboard):把统计整合成可视化面板,但背后数据有时还是分散在各省厅CSV或PDF
- e-Stat Dashboard(https://dashboard.e-stat.go.jp/):国家统计的集中入口,API化做得最好的一部分
- 省厅CSV例子:病院列表CSV(xxxxxx_hospital.csv)、车辆销售(内阁府CSV)等,数据量、字段各异
问题点(技术视角)
- 编码乱象:部分CSV看样子有Shift_JIS或混合编码,抓取时容易出现mojibake(搜索结果第3项片段就有乱码痕迹)
- Schema不统一:不同CSV中同义字段(如都道府县编码、经纬度)命名不同或数据格式不一致
- 元数据缺失:很多CSV缺乏明确的更新时间、バージョン、ライセンス字段,难以做数据治理
- API缺乏一致性:虽有Japan Dashboard与e-Stat API,但并非所有必要数据都可通过稳定REST/GraphQL取得
技术验证与示例代码
エンジニア的に言うと,这些问题都能用一套可重复的ETL+Schema验证流程解决。下面是示例:
Python抓取并修正编码、验证经纬度的示例:
import requests
import chardet
import pandas as pd
url = 'https://notice.go.jp/docs/status_notice.csv'
r = requests.get(url)
enc = chardet.detect(r.content)['encoding']
df = pd.read_csv(pd.compat.StringIO(r.content.decode(enc)))
基本清洗
if 'lat' in df.columns and 'lon' in df.columns:
df = df.dropna(subset=['lat','lon'])
df = df[(df['lat'].between(20,46)) & (df['lon'].between(122,153))]
print(df.head())
要点说明:要先探编码(chardet),再read_csv。经纬度范围校验是简单但常用的数据质量规则。要するに=也就是,先把数据变“可验”再上指标。
API化建议(简要)
- 暴露OpenAPI/Swagger,返回JSON-LD并附带Schema.org/GeoCoordinates
- 提供分页、过滤、ETag/Last-Modified以便前端/爬虫高效同步
- 公布Data Dictionary(字段说明、单位、编码表)与样例数据
示例:用FastAPI把CSV包装成REST接口的示意
from fastapi import FastAPI
import pandas as pd
app = FastAPI()
df = pd.read_csv('status_notice.csv')
@app.get('/api/notices')
def list_notices(q: str = None, limit: int = 100):
res = df
if q:
res = res[res['title'].str.contains(q)]
return res.head(limit).to_dict(orient='records')
指标与政策绑定的实践
政策承诺(比如区域医疗资源均衡、减排目标、车辆销售结构)需要与具体数据表建立一对一的链路:
- 为每项政策声明定义一个可量化的KPI(明确表、字段、计算公式)
- 在数据发布页面同时提供“政策→数据→代码”三联:数据源CSV、计算脚本(Notebook)、可视化配置(Dashboard)
- 实施CI:每次源数据更新后自动跑指标并发布版本差异
举例:把医院CSV和医疗资源KPI绑定
- 数据源:xxxxxx_hospital.csv(含经纬度、医院类型、診療時間)
- KPI示例:每万人人均门诊点数、急救覆盖半径
- 自动化:在更新当天触发Notebook计算并更新Japan Dashboard相关图表
可行的改进路线(工程与政策)
- 采用DCAT/JSON-LD发布Data Catalog,强制元数据字段(更新頻度、ライセンス、連絡先)
- 对重要数据集提供官方API并保证SLA;次要数据也至少提供版本化CSV+ETag
- 建立共同的自治体schema(共通的地理编码、ID规则),用Lookup表桥接历史数据
- 推动“政策承诺必须含数据链路”规则:预算/施策公开时同时提交用于评估的Notebook
まとめ
結論をひとことで言うと:CSV化は前進だけど、それだけじゃ足りない!API化、Schema、元数据与自动化指标链是把承诺变成可验证政策的关键。エンジニア的に言うと、API一本とSchema一套能把很多政治话语变成数据事实!
おかむーから一言
数据就是社会治理的接口,代码把承诺变成可复现的事实。技术不是魔法,但它能帮我们把政治的“说法”变成可以检验的“做法”,这才有意思!
信息来源
- https://notice.go.jp/docs/status_notice.csv
- https://www5.cao.go.jp/j-j/wp/wp-je24/csv/d1-1-4.csv
- https://www.digital.go.jp/assets/contents/node/basic_page/field_ref_resources/ea851c04-54d0-43ab-b352-4cb537ee5347/20210609_resources_survey_answers_04.csv
- https://www.env.go.jp/content/900398071.csv
- https://www.digital.go.jp/assets/contents/node/basic_page/field_ref_resources/0066e8a8-6734-44ab-a9a9-8e09ba9cb508/xxxxxx_hospital.csv
- https://www.digital.go.jp/resources/japandashboard
- https://dashboard.e-stat.go.jp/
- https://www.kantei.go.jp/
- https://webtan.impress.co.jp/n/2025/07/14/49720
- https://www.kantei.go.jp/jp/news/index.html
- https://ja.wikipedia.org/wiki/%E5%85%AC%E5%85%B1
- https://www.intec.co.jp/column/smartcity-08.html
- https://kotobank.jp/word/%E5%85%AC%E5%85%B1-494676
- https://www.digital.go.jp/resources/data_case_study_private
- https://edu.web.nhk/kokokoza/koukyou/
相关报告

代码で語るマニフェスト:以香川县公共设施预约系统为例的技术与数据审视
以香川县公共设施预约系统为例,从API、数据格式与标准化角度检视自治体系统,给出可执行的技术改进方案与代码示例。

用代码说话的宣言:从机器可读性到API化,解读日本数字化政策的数据工程路径
从Digital庁到e-Stat,评估日本数位政策的数据交付形态,提出API化与工程化改进路线,附代码与验证示例。

コードで語るマニフェスト:日本政府データをエンジニア視点で検証する
政府のマニフェストをデータとコードで検証。PDF多用やAPI断片化を指摘し、e-StatやJapan Dashboardを例に具体的な改善案とコード例を提示します。