做数据分析、环境研究,或者只是想给自己所在的城市做一次「空气质量体检」,最头疼的往往是找不到一份干净、结构化、带时间戳的历史数据。官方平台的数据往往分散在各地生态环境厅,口径不一、格式各异,想一次性拿到十个重点城市连续一周的逐小时数据,通常要花上大半天。
这一期「数据资源库」,我们直接从 Open-Meteo 开放的空气质量接口抓取并整理了一份现成数据——覆盖北京、上海、广州、深圳、成都、武汉、西安、杭州、重庆、南京十个城市,过去 7 天、逐小时粒度的 PM2.5、PM10 和美国 AQI 三项指标,一共 1680 条记录。下载解压就能用,文末附蓝奏云链接。
这份数据是什么
简单说,这是一份「中国十大城市空气质量逐小时时间序列数据集」。数据以 CSV 长表形式组织,每一行是一条逐小时记录,包含城市名、时间戳,以及当小时的三项空气质量指标:
- PM2.5(细颗粒物,单位 µg/m³):空气污染里最受关注的一项,直径小于 2.5 微米的颗粒物。
- PM10(可吸入颗粒物,单位 µg/m³):直径小于 10 微米的颗粒物。
- US AQI(美国空气质量指数,无量纲):按美国环保署 EPA 标准换算的空气质量指数,便于跨指标横向对比。
每个城市还附带了经纬度、海拔和时区信息,方便你在地图上做可视化,或者按地理维度做二次聚合分析。数据的时间范围为 2026-10-06 00:00 至 2026-10-12 23:00(北京时间),逐小时连续,无缺测。
压缩包里除了 CSV 主文件,还附带一份 meta.json 元数据说明,把来源、授权、指标口径、采集时间都写清楚了,方便你存档和溯源。
数据来源与授权
这份数据来自 Open-Meteo Air Quality API(接口地址 https://air-quality-api.open-meteo.com/v1/air-quality)。Open-Meteo 是一个开放的气象与空气质量数据服务,其空气质量数据基于欧洲哥白尼大气监测服务(CAMS)的全球再分析产品,通过插值与模型输出得到,并非某个城市地面监测站的实测值。
授权方面,Open-Meteo 采用 CC BY 4.0(署名 4.0 国际)许可,允许免费使用、再分发和二次加工,唯一的要求是使用时署名 Open-Meteo。这一点对个人开发者和小团队非常友好——你可以放心地把这份数据用在自己的分析、课程作业或项目里,只要注明来源即可。
需要特别说明的是:这份数据是模型再分析结果,与国内官方环境监测站发布的实时/历史数据在数值上可能存在差异。如果你要用于正式报告、论文或决策场景,请以生态环境部门官方最新公布的数据为准。
字段与口径说明
CSV 文件的表头共 9 列,逐列说明如下:
- city:城市中文名(北京、上海、广州、深圳、成都、武汉、西安、杭州、重庆、南京)。
- time:时间戳,ISO 8601 格式(如 2026-10-06T00:00),为当地时间整点。
- pm2_5:PM2.5 浓度,单位 µg/m³。
- pm10:PM10 浓度,单位 µg/m³。
- us_aqi:美国 AQI 指数,无量纲,数值越大空气质量越差。
- latitude / longitude:城市坐标(WGS84)。
- elevation_m:站点海拔,单位米。
- timezone:时区(均为 Asia/Shanghai)。
就本次数据而言,十个城市的 PM2.5 逐小时均值差异明显:北京约 119.8 µg/m³、上海约 76.4 µg/m³、深圳约 33.4 µg/m³,全量 PM2.5 均值约 68.5 µg/m³,最大小时值出现在 353.0 µg/m³;US AQI 全量均值约 147.5,最高 274。这些数字能直观反映不同城市在同一时间段内的空气质量差异,是这份数据最有价值的看点之一。
采集与接入方法
如果你希望自己接入这个接口、获取更多城市或更长周期的数据,方法非常简单,无需申请任何密钥。下面是一个最小可用的 Python 示例(纯标准库,无需安装依赖):
import urllib.request, json
url = ("https://air-quality-api.open-meteo.com/v1/air-quality"
"?latitude=39.9042&longitude=116.4074"
"&hourly=pm2_5,pm10,us_aqi"
"&past_days=7&forecast_days=0")
data = json.load(urllib.request.urlopen(url, timeout=60))
print(data["hourly"]) # 返回 time / pm2_5 / pm10 / us_aqi 四个列表
关键参数说明:
latitude / longitude:目标城市坐标。hourly:要返回的逐小时指标,逗号分隔,支持 pm2_5、pm10、us_aqi 等。past_days:回溯天数(最长可到 90 天),forecast_days为预报天数。
接口返回的是 JSON 结构,其中 hourly 下按指标各给一个等长列表,直接用 zip 对齐即可转成表格。本次整理的 CSV 就是按这个思路把十个城市的返回结果合并、统一成一张长表得到的。
更新频率与数据下载
这份数据是一次性整理的快照,覆盖 2026-10-06 至 2026-10-12 这一周。如果你需要持续跟踪,建议自行按上面示例脚本每日或每周跑一次,Open-Meteo 的历史数据接口稳定、免费、无需密钥,很适合做成定时任务。
下载方式如下:
- 蓝奏云下载链接:https://zeyunsoft.lanzoub.com/iDom84bw0q8h
- 提取码:
9sii
下载后解压,可得到 air_quality_10cities.csv 和 meta.json 两个文件。CSV 使用 UTF-8(带 BOM)编码,用 Excel、WPS 或 pandas 都能直接打开,不会出现中文乱码。
常见问题
Q1:这份数据能用于商业用途吗?
可以。Open-Meteo 采用 CC BY 4.0 许可,允许商用和再分发,但需署名来源。
Q2:为什么数值和官方监测站对不上?
因为这是 CAMS 模型再分析结果,不是地面监测站实测值,存在系统性偏差,正式场景请以官方公布为准。
Q3:CSV 打开乱码怎么办?
文件已用 UTF-8(带 BOM)编码,Excel/WPS 可直接打开;若仍乱码,请用「数据 → 自文本」选择 UTF-8 编码导入。
Q4:能拿到更多城市或更长时间的数据吗?
能。接口免费无密钥,改坐标和 past_days 参数即可,最长可回溯 90 天;需要批量城市时逐城请求即可。
Q5:提取码失效或链接打不开怎么办?
蓝奏云分享域名偶有变动,若链接异常可在本站搜索「空气质量」找到最新文章,或留意本文更新。

