中国人口数据 方法、口径与限制

Appendix

这些数字是怎么来的

任何一个数字被引用时,都应该能回答三个问题:谁统计的、怎么定义的、误差在哪。这一页把这三件事写清楚。

一、两个来源,不能混为一谈

本站的数据并非来自单一渠道。全国时序数据与分省数据是两套完全不同的来源,口径不可直接相减。

用途来源覆盖许可
全国历年时序 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 分钟内自动构建

七、一条自我约束

本站所有数字均来自上述两类公开来源,或由它们直接计算得出。无法核实的指标一律不展示,不用估算值填充空缺。 宁可少一张图,不留一个编造的数值——人口数据一旦出错,比页面难看严重得多。