一、两个来源,不能混为一谈
本站的数据并非来自单一渠道。全国时序数据与分省数据是两套完全不同的来源,口径不可直接相减。
| 用途 | 来源 | 覆盖 | 许可 |
|---|---|---|---|
| 全国历年时序 | World Bank Open Data | 1960—2025 | CC BY 4.0 |
| 分省人口 | 国家统计局《第七次全国人口普查公报(第三号)》 | 2020 年时点 | 政府公开信息 |
| 省级边界 | 阿里云 DataV.GeoAtlas(基于国家基础地理信息中心标准地图) | 现行行政区划 | 公开数据 |
二、指标目录
全国时序部分共 8 个原始指标,另有 2 个由原始指标计算得出的派生指标。
| 指标 | 世界银行代码 | 单位 | 覆盖年份 | 性质 |
|---|---|---|---|---|
| 年末总人口 | SP.POP.TOTL | 人 | 1960—2025 | 原始 |
| 出生率 | SP.DYN.CBRT.IN | ‰ | 1960—2024 | 原始 |
| 死亡率 | SP.DYN.CDRT.IN | ‰ | 1960—2024 | 原始 |
| 0—14 岁人口占比 | SP.POP.0014.TO.ZS | % | 1960—2025 | 原始 |
| 15—64 岁人口占比 | SP.POP.1564.TO.ZS | % | 1960—2025 | 原始 |
| 65 岁及以上人口占比 | SP.POP.65UP.TO.ZS | % | 1960—2025 | 原始 |
| 城镇化率 | SP.URB.TOTL.IN.ZS | % | 1960—2025 | 原始 |
| 总和生育率 | SP.DYN.TFRT.IN | 个 | 1960—2024 | 原始 |
| 年增量 | — | 人 | 1961—2025 | 派生(差分) |
| 自然增长率 | — | ‰ | 1960—2024 | 派生(出生率 − 死亡率) |
三、三个必须知道的口径问题
口径问题一 · 与统计局不完全一致
世界银行的中国人口数据由联合国人口司估算与各国上报数据混合而成。以 2024 年末人口为例:国家统计局口径为 14.08 亿,世界银行为 14.08975 亿,相差约 100 万人。差异幅度很小,但确实存在。引用本站数字时,请注明"世界银行口径",不要与统计局公报数字混用。
口径问题二 · 分省数据的时点局限
分省数据来自第七次全国人口普查,是单一时点(2020 年 11 月 1 日零时)的截面数据,没有逐年序列。因此"分省与流动"一页只能展示一个年份的分布,无法呈现各省人口随时间的增减。要补齐这一点,需要逐年整理各省统计年鉴,工作量与出错风险都显著高于现有范围。
口径问题三 · 港澳台不在统计范围内
七普公报的 31 个省级单位指大陆的省、自治区、直辖市,不含香港、澳门特别行政区和台湾地区,也不含居住在大陆的外籍人员。地图上这三地按底图显示但不着色,属正常现象,不代表数据缺失。
四、已知限制
以下限制是这份数据本身的边界,不是页面缺陷。
| 限制 | 原因 | 影响 |
|---|---|---|
| 无逐岁年龄结构 | 世界银行仅提供三大年龄段占比 | 无法绘制标准人口金字塔,改用 100% 堆叠面积图 |
| 数据不实时 | 抓取后固化为静态 JSON | 每年公报发布后需重新运行脚本才会更新 |
| 部分指标滞后一年 | 出生率、死亡率、生育率暂至 2024 年 | 涉及这三项的结论以 2024 年为准 |
| 1960 年前后数据波动大 | 特殊历史时期,统计基础薄弱 | 该区间不适宜做趋势外推 |
五、技术说明
站点为纯静态页面,无后端、无数据库、无用户系统。
| 环节 | 实现 |
|---|---|
| 托管 | GitHub Pages,自定义域名 + 强制 HTTPS |
| 数据抓取 | Python 脚本 tools/fetch_data.py,带指数退避重试与本地缓存 |
| 数据存储 | data/*.json 静态文件,页面通过 fetch 读取 |
| 图表 | ECharts 5.5.1,本地引入,不依赖任何外部 CDN |
| 样式 | 原生 CSS,无框架,无构建步骤 |
为什么不用 CDN 图表库若从外部 CDN 加载,一旦该 CDN 在特定网络环境下不可达,整站图表会全部白屏。本地化多付出约 1 MB 的体积,换来的是"只要能打开页面就能看到图"。
六、如何更新数据
全国时序数据可一键刷新;分省数据需在公报更新后手工修订。
| 场景 | 操作 |
|---|---|
| 刷新全国数据 | 运行 python tools/fetch_data.py(加 --force 强制重新抓取),随后提交 data/national.json |
| 更新分省数据 | 修改 tools/build_province.py 中的省级人口数组,运行脚本。脚本会校验合计是否与公报吻合,不吻合则拒绝写出 |
| 页面发布 | 推送到 main 分支,GitHub Pages 约 1 分钟内自动构建 |
七、一条自我约束
本站所有数字均来自上述两类公开来源,或由它们直接计算得出。无法核实的指标一律不展示,不用估算值填充空缺。 宁可少一张图,不留一个编造的数值——人口数据一旦出错,比页面难看严重得多。