
做环境数据分析的朋友应该都有过这种经历为了核对一个城市的PM2.5浓度变化翻遍各种网站最后拿到的数据不是口径不一就是格式混乱。所以当我看到这份“2014-2025年全国监测站点的逐月空气质量数据”时第一反应是——终于有一份能直接拿来干活的东西了。它覆盖全国监测站点以逐月为时间粒度包含15个指标同时提供Excel和Shp两种格式既能做统计运算又能直接进GIS做空间分析。这篇文章我就从实际使用角度把这份数据从结构、指标、Excel处理、Shp操作到典型分析场景完整拆一遍顺便把常见的坑也一起列出来帮你少走弯路。1. 数据整体认知先搞懂你手里拿的到底是一份什么资料拿到任何数据集第一件事不是急着分析而是先把数据的边界、结构、口径摸清楚。这份数据的时间跨度是2014年到2025年也就是说覆盖了新版《环境空气质量标准》落地实施之后的完整阶段。2012年国家发布新标准2013年起各地陆续按新标准开展监测到2014年全国监测体系基本形成统一可比的数据序列所以2014年作为起点是有讲究的。按月份组织接近144个月份的逐月记录很适合做长期趋势、季节周期、政策效果评估这类分析。站点层面数据覆盖全国各监测站点也就是通常说的国控点。国控站点数量早期一千多个后来逐步扩充到2025年大约有一千六七百个分布在三百多个地级及以上城市。这些站点的位置经过严格审核空间分布基本能代表城市建成区的空气质量水平。要注意的是这不是卫星反演数据也不是模型模拟数据而是地面监测站点的实测数据权威性高分析结论站得住脚。再说格式。网上很多空气质量数据集要么只给Excel要么只提供带坐标的表格很少像这样同时给出Excel和Shp。Excel格式适合做统计、透视、函数计算Shp格式是GIS领域的通用矢量格式可以直接加载到ArcGIS或QGIS里做插值、制图、叠加分析。这就相当于同一份资料既给了你纸质表格又给了你带定位的地图两个场景都能直接开工。1.1 15个指标到底包含什么所谓的15个指标常见组合大致分成四类一类是常规六项污染物浓度包括PM2.5、PM10、二氧化硫、二氧化氮、一氧化碳、臭氧第二类是评价类指标包括空气质量指数AQI、首要污染物、空气质量等级第三类是气象辅助要素比如温度、湿度、风速、风向、气压第四类是站点属性信息比如站点编码、站点名称、所属城市、经度纬度。不同发布方具体组合会略有差异以数据集内的说明文件为准但总体逻辑就是这样。这里有一个容易忽略的点六项污染物并不完全等于AQI计算的全部输入。AQI的原始计算是用PM2.5、PM10、SO2、NO2、CO、O3这六项的浓度值分别计算分指数IAQI然后取最大值作为当天的AQI。逐月数据通常是用月均浓度或月内日均值统计后汇总所以你在分析时要先确认指标口径是月均浓度、月均AQI还是月内日数据再聚合这会直接影响后续统计结果。1.2 为什么是2014-2025这个时间窗2014年之前很多城市还沿用旧标准PM2.5和O3的监测数据不完整不同城市之间的可比性差。2014年之后国控站点统一按新标准运行数据质量明显提升。到2025年整整十二年正好是一个可以承载“十年尺度趋势判断”的样本区间。尤其是做“大气十条”“蓝天保卫战”这类政策效果评估这个时间窗能把政策实施前后的变化完整纳入。2025年作为截止年份也意味着这份数据对于做最新年度报告、十四五收官评估、以及未来规划基线设定都非常合适。如果你做城市规划、环境健康研究或ESG分析这个时间长度足够支撑稳定的统计推断不会因为样本太短而被审稿人或客户质疑。1.3 Excel和Shp双格式的价值再多说一句格式的问题。很多人习惯只用Excel觉得Shp没必要但只要你做过空间制图或者相邻站点空间相关性分析就会明白Shp的价值。比如你想画出全国PM2.5年均浓度分布图Excel表格无法直接完成空间插值必须把站点坐标导入GIS生成点要素再通过插值工具生成连续表面。反过来如果你只想快速统计各省均值、做趋势图Shp的属性表也可以导出成Excel再配合数据透视表搞定。双格式的真正价值是让你在统计分析和空间分析两条路径之间自由切换不用自己再去写转换脚本。2. 15个指标逐个拆解与使用要点指标看着多其实归类后很好记。我按使用频率和易错程度逐个说一下。2.1 常规六项污染物量纲和统计口径是重灾区PM2.5和PM10单位是微克每立方米μg/m³这俩是颗粒物指标PM2.5通常指空气动力学当量直径小于等于2.5微米的颗粒物PM10是小于等于10微米的。分析的时候要区分“月均浓度”和“日均浓度二次聚合”如果有月内日均值你可以自己算月均但如果只有月均值就别强行还原日均值分布。PM2.5在秋冬季容易超标做季节分析的时候记得把12月、1月、2月单独拎出来看。二氧化硫SO2和二氧化氮NO2单位同样是微克每立方米主要来自燃煤和机动车排放。SO2在南方城市通常低于北方NO2则和城市机动车保有量、产业布局高度相关。这两个指标在2014年之后整体下降趋势明显做趋势分析时配合线性回归或Mann-Kendall检验更有说服力。一氧化碳CO单位是毫克每立方米mg/m³注意和上面几个微克每立方米的指标差了1000倍做综合指数计算时一定要先统一单位否则公式算出来差好几个数量级。CO主要来自不完全燃烧冬季高、夏季低北方采暖期尤其明显。臭氧O3是最容易踩坑的指标。环境监测上通常用“日最大8小时滑动平均”来评价臭氧而不是简单用24小时平均。如果你拿着逐月数据里的O3月均值直接和PM2.5月均值比较会忽略一个关键事实O3的月均值可能是基于日最大8小时均值再求月平均得来的也可能直接是月内日均值再平均两种口径差异非常大。做臭氧分析前务必看清楚字段说明里写的是哪种口径。O3还有个特点是夏季高、冬季低正好和颗粒物相反分析时空特征时要分开讨论。2.2 AQI与配套指标评价逻辑要用对AQI是一个无量纲指数取值范围从0到500数值越大污染越重。计算AQI时先分别计算六项污染物的IAQIIndividual Air Quality Index单项空气质量指数然后取最大值。AQI对应的空气质量等级分为优、良、轻度污染、中度污染、重度污染、严重污染六档分别对应绿色、黄色、橙色、红色、紫色、褐红色。做等级占比分析时用“优良天数比例”这个指标更直观也是地方考核常用的指标。首要污染物字段表示当天或当月对AQI贡献最大的污染物。这个字段在逐月数据里往往是一个字符串比如“PM2.5”“O3”“无”。分析它的时候建议先做去重和归类再统计频次否则可能出现同义不同写的表述比如“细颗粒物”和“PM2.5”同时存在。空气质量等级字段则是AQI区间的高度概括按国家HJ 633-2012标准划分可以直接用于计算优良率。2.3 气象辅助指标别忽视它们的解释力温度、湿度、风速、风向、气压这几个气象要素在空气质量分析里不是配角。湿度高的时候颗粒物容易吸湿增长风速大有利于污染物扩散逆温天气下污染物容易堆积。如果你发现某个月某城市PM2.5浓度异常偏高先看看同期风速是不是明显偏低往往能找到原因。风向数据通常用度数表示0度表示北风90度表示东风做风向分析时最好转成16方位再用风玫瑰图展示直观得多。气压要素在分析中不算高频但在研究污染过程、静稳天气时很有用。低气压、高湿度、小风速经常是重污染过程的共同特征。做案例复盘时把气象要素和污染物浓度画在同一张图里能明显看出污染积累和清除的物理过程。3. Excel格式从打开到高效分析的关键操作Excel格式是大多数人最先接触的但恰恰是最容易被小问题卡住的地方。文件大、字段多、日期格式乱、函数不熟都会让本该半小时完成的统计变成一下午的噩梦。3.1 数据表结构与站点编码先看表结构。通常一张表里至少包含日期年-月、站点编码、站点名称、城市、省份、经度、纬度以及各个污染物字段和气象字段。站点编码是唯一主键后续做多表关联、去重、匹配城市都靠它。建议拿到数据后先检查站点编码是否唯一同一站点在同一个月内是否出现重复记录。这个检查很关键因为数据拼接或导出过程中偶尔会出现重复行不处理掉后面所有统计都是错的。检查重复可以用Excel条件格式中的“突出显示重复值”也可以用COUNTIF函数。比如新增一列输入COUNTIF(A:A,A2)结果大于1的就是重复记录。更稳妥的方式是复制整张表到新工作簿用“数据”选项卡下的“删除重复值”功能按站点编码日期两列一起判断重复。我建议在正式分析前专门做一次数据体检把重复项、空值、异常值都标记出来形成一份数据质量报告。3.2 Excel打开卡顿先做这三步十二年全国数据逐月记录站点又有一千多个总的记录数轻松超过二十万行。这样的数据量老电脑直接双击打开Excel会很吃力。我实际用的方法是分三步第一步用Excel的“数据→自文本/CSV”导入而不是直接打开工作簿导入时可以预选列类型避免日期和站点编码被自动转换第二步如果数据实在太大先按省份或年份拆分成多个工作表每个工作表控制在五万行以内操作起来基本不卡第三步启用“Power Query”做数据清洗Power Query可以连接原始文件在后台完成筛选、分组、聚合最后再加载到工作表比直接在单元格里拉公式高效得多。如果你的数据文件本身是.xlsx格式且非常大建议另存为.xlsb格式。xlsb是二进制工作簿体积小、打开快而且兼容绝大部分Excel函数和透视表功能。实测二十万行的数据xlsb比xlsx打开速度快一倍以上。3.3 高频Excel操作用法速查做空气质量数据分析Excel函数不需要学很多但有几个高频操作的效率提升特别明显。多条件汇总用SUMIFS。比如你想统计“2020年河北省所有站点PM2.5年均浓度”可以在汇总表里写SUMIFS(浓度列, 省份列, 河北, 年份列, 2020)/COUNTIFS(省份列, 河北, 年份列, 2020)SUMIFS负责求和COUNTIFS负责计数两者一除就是均值。注意SUMIFS的参数顺序是“求和区域在前条件区域和条件成对出现”和SUMIF不一样容易写错。多条件筛选用“筛选”功能的高级筛选。如果只是想快速看某个城市某几年的数据可以直接用自动筛选下拉框多个条件分开设置。如果条件复杂比如“PM2.575且O3100且城市为北京”建议用高级筛选先在一空白区域写好条件表列名要和数据表列名完全一致然后在“数据→高级”里选择条件区域即可。两列查重用COUNTIF或条件格式。比如比对站点编码列和另一份文件的站点编码列看哪些站点在A文件有而B文件没有。新增一列输入IF(COUNTIF(B:B,A2)0,存在,缺失)下拉填充即可快速标记。月份日期处理是另一个高频需求。逐月数据的日期字段可能是“2020-01”这样的文本也可能被Excel自动识别成日期。如果你发现用VLOOKUP匹配不到数据十有八九是日期格式不一致。统一办法是新增辅助列用TEXT(A2,yyyy-mm)把日期转换成固定文本格式再作为匹配键。3.4 Excel常见故障排查我在实际使用中遇到过不少Excel本身的怪问题这里集中说一下。如果你发现“Excel无法粘贴数据”多半是剪贴板被其他程序占用或者Excel进程卡死。解决办法很简单关掉所有Office程序在任务管理器里结束所有Excel进程重新打开如果还不行就复制一个单元格试试再复制大区域逐步缩小排查范围。还有一个经典报错“双击单元格时提示这个操作只对当前安装的产品有效”。这个问题通常出现在Office安装不完整或注册表残留旧版本的情况下尤其是从旧版本Office升级到新版本后概率更高。解决方法是进入“控制面板→程序和功能”找到Office对应版本选择“更改→联机修复”让Office自己修复如果修复没用可以尝试清理注册表中Office相关的失效键值但操作注册表前一定先备份。Mac版Excel的情况稍有不同。M系列芯片的Mac上Excel偶尔会出现复制粘贴无反应可以先试试用CommandC和CommandV而不是右键菜单或者重启Excel。Mac版Excel对VBA的支持不如Windows完整如果想用VBA写自动处理脚本建议还是用Windows环境更省心。4. Shp格式空间数据的使用与转换全流程Shp格式是ESRI推出的矢量数据格式严格来说它不是一个文件而是一组文件的总称。拿到Shp数据后如果发现只有一个.shp文件那是坏的正常的Shp至少要包含.shp几何、.shx索引、.dbf属性表三个文件最好还有.prj坐标系文件。缺了.prjGIS软件虽然能打开但不知道坐标系后续投影转换会出问题。4.1 先确认坐标系和属性表拿到Shp数据第一件事用ArcGIS或QGIS打开右键图层打开属性表看字段。属性表里应该有站点编码、城市、日期、各污染物浓度等字段这些和Excel表里的字段是对应的。如果这个Shp是“点要素”那它代表的就是各个监测站点的位置和对应月份的属性值。如果Shp是“面要素”那可能是行政区划范围需要用空间连接再把站点属性关联到面上。坐标系方面大多数全国范围的公开数据会采用WGS84地理坐标系也就是经纬度直接表示单位是度。如果你后续要计算距离或者做面积统计一定先投影到合适的投影坐标系比如Albers等积投影或UTM分带投影否则距离单位会是“度”而不是米计算结果无法使用。4.2 把Excel中经纬度数据导入ArcMap生成Shp很多人拿到的是Excel表没有现成的Shp文件这时候就得自己生成。在ArcMap里的操作其实很成熟步骤如下先打开Excel表格确认有经度、纬度两列经度是X纬度是Y。然后在ArcMap菜单栏选择“文件→添加数据→添加XY数据”在弹出的对话框里选择Excel工作表X字段选经度列Y字段选纬度列坐标系选WGS84。点击确定后地图窗口会生成一个临时点事件图层。这时候这个图层还不是真正的Shp只是内存中的临时图层需要右键这个图层选择“数据→导出数据”选择导出为Shp格式保存路径不能有中文否则可能失败。QGIS里面更简单菜单“图层→添加图层→添加分隔文本图层”文件类型选CSV或Excel指定X字段和Y字段坐标系选WGS84 EPSG:4326加载后右键图层“导出→保存要素为”格式选ESRI Shapefile。整个过程一分钟内搞定而且QGIS是免费的。4.3 Shp转TXT、Excel属性表互通Shp格式的优势是带空间位置劣势是不方便做统计运算所以经常需要把Shp的属性表转到Excel或TXT里。ArcMap中可以用“属性表→表选项→导出”保存类型选择dBASE表或者文本文件。如果装了ArcToolbox也可以用“转换工具→Excel→表转Excel”直接生成xlsx文件。QGIS里更灵活右键图层“导出→保存要素为”格式选CSV就可以得到带经纬度的文本文件再用Excel打开就是一张表格。反过来如果你有Excel表格想转成Shp除了前面说的添加XY数据方式也可以用ArcToolbox里的“从XY表生成要素”工具这个工具适合批量处理多张表而且可以直接指定坐标系和输出位置。热词里提到的shp转txt本质上就是为了把属性数据拿到其他平台做进一步分析比如导入SPSS、R或者Python。4.4 Shp常见编辑需求与修复实践中有几个Shp处理需求非常高频。第一个是“只保留外边界线”也就是把复杂的行政区划面合并成一个轮廓。在ArcGIS里用“融合Dissolve”工具输入要素选行政区面融合字段选“省份”或“城市”输出就是按省或市合并后的轮廓。如果只需要全国整体外边界融合字段留空所有面融合成一个再转成线要素就能得到外边界线。第二个是“渔网分割Shp”。做空间网格化统计时经常要把研究区域划分成规则网格用ArcToolbox里的“数据管理工具→要素类→创建渔网”设置好像元大小和范围生成网格面后再用“空间连接”把站点属性匹配到网格里。这个方法适合做污染热点识别比如判断哪些网格年均浓度高、哪些网格改善幅度大。第三个是Shp文件损坏修复。Shp文件偶尔会打不开提示“无法读取文件”或“几何错误”。网上常说的ShapeChecker是一个轻量的修复工具使用步骤是打开ShapeChecker选择损坏的.shp文件软件会自动扫描文件结构找出缺失的.shx或.dbf问题然后点击“修复”生成新的文件。修复后记得检查属性表是否完整有时候几何能打开但属性丢失这种修复后还得从原始Excel重新关联属性。第四个是和可视化相关的需求shp转3dtiles。如果你想把空气质量监测站点做成三维可视化场景可以在Cesium或MapBox里加载。转换思路是先用FME或cesiumlab把Shp转成3dtiles格式再在三维地球中加载。这个操作有点门槛但做出来效果很惊艳适合汇报展示或大屏项目。4.5 制图展示的配色与符号化建议Shp数据的最终产出往往是一张专题图。制图时配色要符合阅读直觉污染物浓度从低到高建议使用从蓝到黄到红的渐变不要用单一的绿色深浅变化否则浓度高低不明显。AQI等级分布则建议直接用国家标准色优绿色、良黄色、轻度橙色、中度红色、重度紫色、严重褐红这样内行一眼就懂。如果做分城市点状图可以用分级符号把PM2.5年均浓度分成几个等级用不同大小的圆点表示。如果做插值图用IDW或克里金插值生成连续表面再叠加省界、城市界作为底图。记得出图前关闭不需要的图层标注好图例、比例尺、指北针这些细节直接决定报告的专业感。5. 用这份数据做一次“全国空气质量十年演变”分析这一章我以一个具体案例来串一遍数据使用的完整流程。目标很简单看看2014到2025年间全国PM2.5年均浓度到底降了多少顺便比较几个重点区域的差异。5.1 明确分析目标与指标口径分析目标不同数据聚合方式就不同。如果只看全国整体趋势应以站点为基本单元先求各站点年度均值再以城市为单元求城市均值最后以省份为权重求全国均值。注意并不是简单把所有站点浓度加总求平均因为一个城市可能有十几个站点省会城市站点多、地级市站点少直接站点平均会被大城市拉高建议先归到城市再平均这样每个城市权重相等。指标口径上PM2.5月均浓度在Excel里如果已经提供了直接字段那就不用自己算。但如果是“日均值”字段你需要用数据透视表按月求平均。这里要注意月均值应该是该月有效日数大于等于27天2月可放宽到25天时才算有效否则该月月均值记为缺失这是环境监测规范里常见的要求直接省去会引入偏倚。5.2 数据清洗与预处理流程清洗这一步没法省。先做去重按站点编码月份检查重复保留一条。再做缺失值检查统计每月有效站点数量如果某月有效站点数量骤减可能是设备维护或数据传输故障这个月的数据在趋势分析中应赋予较小权重或排除。然后是异常值检查负浓度和超过合理上限的数值比如PM2.5月均值超过500μg/m³基本可以判定为异常直接剔除或标记为缺失。如果你会用Python建议用pandas做清洗更高效df df.drop_duplicates(subset[station_code, year, month])再用df[df[pm25] 0] np.nan处理负值。想查找Excel中某个字符串也可以用pandas的str.contains快速定位比如筛出站点名称中带“对照”字样的对照点。不会Python就用Excel的筛选和替换功能也能处理只是慢一些。5.3 城市与区域对比京津冀、长三角、珠三角清洗完数据后先做全国时间序列图把每年全国城市PM2.5年均浓度中位数和平均值画在一张折线图里就能明显看到下降趋势。然后把站点按省份或城市分组重点比较京津冀、长三角、珠三角三个区域。京津冀的PM2.5浓度起点高降幅通常也最大珠三角起点低改善幅度相对平缓这和产业结构、气候条件、污染物传输都有关系。这里建议做两个可视化一是分区域的年均浓度折线图能看出趋势差异二是各城市改善率排名用条形图展示改善幅度最大的前20个城市和改善幅度最小的后20个城市排出来会很有信息量往往能发现一些政策效果特别显著的典型城市。5.4 可视化与报告呈现除了折线图热力图也适合展示月度高值分布。比如用Excel条件格式做一个十二月年份矩阵横轴是1到12月纵轴是年份单元格颜色代表月均浓度暖色越多说明冬季污染越重一眼就能看出“秋冬季高发”的规律。这个做法简单但汇报效果很好。如果你要把各城市“PM2.5年均浓度首次达到国家二级标准35μg/m³的年份”做成时间表可以用Excel甘特图思路用堆积条形图第一系列是达标之前的时间长度第二系列是达标之后的时间长度两个系列首尾相接视觉上就像一条条进度条非常适合展示“哪些城市什么时候达标”。制作要点是整理三列城市名、首次达标年份序号、之后持续年份序号插入堆积条形图把第一系列填充设为无填充就是标准甘特图效果。6. 常见问题与排查技巧实录最后这部分我整理了一份实战速查表都是我实际帮朋友排查过的问题直接照着处理就好。问题常见原因解决办法Excel打开csv文件中文乱码文件编码不是UTF-8默认用ANSI打开用记事本打开另存为UTF-8或Excel“数据→自文本/CSV”导入并选择65001编码Excel无法复制粘贴剪贴板异常或多个Excel实例卡死结束所有Excel进程重启关掉占用剪贴板的程序录屏软件、远程工具双击单元格提示“只对当前安装的产品有效”Office安装损坏或注册表残留旧版本控制面板→Office→联机修复备份注册表后清理残留值经纬度导入ArcMap不显示点经度纬度列弄反或表格有表头识别问题确认X为经度Y为纬度ArcMap添加XY数据时勾选首行含字段名Shp打开提示缺少投影信息缺.prj文件右键图层属性手动指定坐标系或从同地区其他文件复制.prj并改名同一个站点同一个月出现两行数据合并时重复匹配按站点编码日期去重先统计重复行数再删日期字段变成数字或科学计数Excel自动格式转换导入时指定日期列格式为文本或新增列用TEXT函数转换Shp文件打不开报几何错误文件损坏或拓扑错误用ShapeChecker修复或先导入QGIS用“修复几何”工具站点经纬度与城市对不上个别站点搬迁或坐标录入错误用城市字段反查经纬度明显离群点标记并核实这里单独说一个经验做空间分析前先把Shp里的站点经纬度和Excel里的经纬度逐一比对一遍最快的方法是用VLOOKUP按站点编码匹配两边的经纬度再新增一列计算差值差超过0.01度约1公里的基本就是坐标不一致需要重点核实。这个检查在别人分享的数据里尤其有必要因为不同版本的坐标可能采用过不同基准。还有一个关于输出的小技巧很多人习惯把报告里的Markdown表格手动贴到Excel排版很容易乱。其实可以直接在Markdown编辑器里全选表格复制后到Excel里粘贴为Unicode文本Excel会自动按制表符分列然后再用“数据→分列”进一步处理。如果你是在线文档很多也支持直接粘贴成表格省去手动调整的功夫。这个流程对于经常做数据处理交接的人来说能省不少时间。再提醒一句关于数据版本的问题。做研究或写报告前一定要先看数据版本和发布日期确定用的不是过时版本。如果数据集里包含了数据说明文件先读一遍特别是数据来源、指标定义、修订记录这三块。有些指标在监测规范修订后统计口径可能有微调比如O3的统计方式从日最大8小时均值改为其他口径如果你不读说明直接沿用旧的解读结论很容易出错。我自己的习惯是拿到数据后先写一个“数据告知表”把数据的时间范围、站点数、指标数量、缺失比例、更新日期列成一行贴在做分析的工作簿首页这样每次打开文件都能提醒自己这份数据的边界在哪避免时间一长就忘了数据是哪一版。这个习惯帮我避免过好几次因误用错版数据而得出的偏颇结论。如果你需要拿这份数据做长期监测、写年度报告或者搭建可视化大屏强烈建议建一个固定的处理模板原始数据放一个文件夹清洗后的数据放另一个文件夹Shp文件单独建GIS文件夹Excel图表模板单独保存。处理流程固定下来之后以后每个月只要把新数据往里一放刷新一下透视表或者重新运行一遍脚本产出自动生成能省下大量重复劳动。这件事看起来不起眼但坚持一两年后你会感谢当初搭过的这个流程。