发布时间:2026/8/16 20:32:36
CN-AIR数据处理进阶:长格式转换与多年数据合并实战 CN-AIR数据处理进阶长格式转换与多年数据合并实战【免费下载链接】CN-AIR项目地址: https://ai.gitcode.com/GewisLab/CN-AIRCN-AIR 是一个覆盖 2014 至 2026 年中国 300 多座城市空气质量的开源数据集包含 AQI、PM2.5、PM10、SO2、NO2、O3、CO 等 15 项指标数据按「一天一个 CSV」的方式分散在 4000 多个文件中。新手往往被它「一列一座城」的宽表结构和海量小文件劝退其实只要掌握长格式转换与多年数据合并这两步 CN-AIR数据处理技巧后续一切分析都会顺畅许多。本文用最精简的 pandas 代码带你走通完整的实战流程。一、CN-AIR 原始数据格式解读一列一座城的宽表结构先弄清楚数据长什么样。仓库根目录下按年份组织数据城市级数据位于 城市_20140513-20141231/ 至 城市_20260101-20260418/ 共 13 个目录中每个目录里是形如china_cities_20240101.csv的每日文件。获取数据只需克隆仓库git lfs install git clone https://gitcode.com/GewisLab/CN-AIR cd CN-AIR pip install pandas pyarrow打开任意一个 CSV例如 china_cities_20240101.csv结构一目了然date,hour,type,北京,天津,石家庄,... 20240101,0,AQI,64,130,96,... 20240101,0,PM2.5,35,99,65,...用表格表示更清晰datehourtype北京天津石家庄202401010AQI6413096202401010PM2.5359965字段含义date是 YYYYMMDD 格式日期hour是 0-23 小时type是指标类型AQI、PM2.5、PM2.5_24h、PM10、SO2、NO2、O3、CO 及各自的 24 小时均值等后面每一列是一座城市。这种「每座城市占一列」的结构就叫宽表wide format。二、为什么要做 CN-AIR 长格式转换宽表方便人眼阅读却很不方便机器分析。做长格式转换后数据会变成「一行一条记录」的长表long formatdatehourtypecityvalue202401010AQI北京64202401010AQI天津130202401010AQI石家庄96两者的差异和适用场景对比对比项宽表原始长表转换后行数少一天约 360 行多一天约 13 万行适合人工查看、Excel 展示groupby 聚合、绘图、机器学习典型操作按列取城市按 city/type 筛选、透视绝大多数数据分析和可视化库如 seaborn、plotly都偏爱长表因为它能把「城市」「指标」当作普通维度来筛选和分组。三、CN-AIR 长格式转换实战一行 melt 搞定 pandas 的melt函数就是为宽表转长表设计的核心代码只有几行import pandas as pd df pd.read_csv( 城市_20240101-20241231/城市_20240101-20241231/china_cities_20240101.csv ) # 长格式转换把300多个城市列折叠成 city / value 两列 df_long df.melt( id_vars[date, hour, type], # 保留这三列 var_namecity, # 原列名 → 城市名 value_namevalue # 原数值 → 观测值 ) print(df_long.head())三个关键参数id_vars指定要保留的标识列var_name给折叠出的列起名value_name给数值列起名。转换后每个「日期 × 小时 × 指标 × 城市」组合都是一行后续想筛北京 2024 年全部 AQI 数据只需df_long[(df_long[city]北京) (df_long[type]AQI)]。四、CN-AIR 多年数据合并实战glob 批量读取 concat 拼接单日文件只有几百行真正的价值在于把 2014-2026 年共4349 个 CSV合并成一份完整数据。合并思路很简单先glob匹配所有文件再逐个读取最后concat拼接import pandas as pd import glob # 匹配所有年份目录下的全部CSV files glob.glob(城市_*/*/*.csv) print(f共找到 {len(files)} 个文件) dfs [] for f in files: try: dfs.append(pd.read_csv(f)) except Exception: continue # 跳过损坏或空文件 combined pd.concat(dfs, ignore_indexTrue) # 保存为Parquet后续读取快且体积小 combined.to_parquet( china_cities_combined.parquet, enginepyarrow, compressionsnappy )合并后的宽表约有150 万行 × 300 多列保存为 Parquet 后以后只需pd.read_parquet(china_cities_combined.parquet)一行即可秒级加载不必再重复读取几千个小文件。这一步完成后你就拥有了全国 12 年完整的空气质量宽表数据进阶之路就此打通。五、合并后的数据怎么用三个空气质量分析示例 数据合并完成后真正好玩的才刚刚开始。例如计算每年各城市的平均 AQIaqi combined[combined[type] AQI].copy() aqi[year] aqi[date].astype(str).str[:4] yearly_aqi aqi.groupby([year, city])[value].mean().reset_index()基于这样合并后的多年数据我们可以轻松画出北京、上海十年间的空气质量变化图。下图展示了 CN-AIR 多年数据合并后的成果——两市年均 AQI 长期下降趋势再看 PM2.5 的年均浓度对比北京从 2014 年约 80 μg/m³ 一路降至 2025 年的 28 μg/m³治理成效肉眼可见如果结合优良天数标准做统计还能得到空气质量优良天数比例的变化曲线北京的优良天数比例从 2014 年的 56% 提升到 2025 年的接近 95%这些图表都离不开前面的长格式转换与多年数据合并——它们是所有时间序列分析的基石。六、CN-AIR 多年数据合并避坑指南 ⚠️实战中这几类坑几乎人人都会遇到提前了解能省下大量排查时间城市列名跨年不一致。对比历年表头会发现同一城市在不同年份可能改名例如「库尔勒」后来变为「巴音郭楞州」、「那曲地区」变为「那曲」、「延边州」变为「延边朝鲜族自治州」。直接 concat 时这些列会同时存在统计城市数量前建议先统一列名。缺失值无处不在。原始 CSV 中有大量空白单元格读取后为 NaN。计算均值等操作前记得dropna()或fillna()否则结果会出现意想不到的缺口。文件并非每年完整。2014 年只有 224 个文件自 5 月 13 日起且部分日期缺失、2018 年 360 个、2026 年截至 4 月仅 113 个做年度对比时要注意样本量差异。长表行数会爆炸。宽表 150 万行 × 300 多列melt 后膨胀到数亿行直接全量转换容易内存不足。建议按年份分块处理或只筛选自己需要的type后再转换。优先使用 Parquet。合并后立即转存 Parquet 并沿用读取速度比 CSV 快一个数量级也能避免反复解析几千个文件。七、总结让 CN-AIR 数据处理事半功倍回顾一下完整流程只有三步看懂宽表结构 → 用melt做长格式转换 → 用glob concat合并多年数据并转存 Parquet。掌握了这些CN-AIR 数据处理就不再是拦路虎你可以放心地把精力投入到真正有价值的分析中比如年度趋势对比、区域差异研究、污染事件复盘等。更多字段细节与官方示例可参考仓库内的 README.md。现在就动手把 12 年的空气质量数据变成你自己的分析资产吧【免费下载链接】CN-AIR项目地址: https://ai.gitcode.com/GewisLab/CN-AIR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/16 20:27:36

VS Code 从零安装到高效配置:解决常见错误与搭建开发环境

1. 从零开始:为什么选择 VS Code 以及它能为你做什么 如果你刚开始接触编程,或者厌倦了那些庞大、笨重的集成开发环境(IDE),那么 Visual Studio Code(简称 VS Code)几乎是你绕不开的一个名字。它…

2026/8/16 21:27:44

OpenClaw多云AI生态兼容性实践:解耦、适配与抽象设计

1. 项目概述:当AI智能体遇上多云生态 最近两年,AI智能体(Agent)的开发热度居高不下,从单机玩具到企业级应用,大家讨论的焦点逐渐从“能不能跑起来”转向了“怎么高效、稳定地融入现有技术栈”。OpenClaw作为…

2026/8/16 21:27:44

戴尔服务器RAID配置与系统安装全流程实战指南

1. 项目概述:从零开始搞定一台戴尔服务器 最近在帮朋友的公司部署一台新的戴尔PowerEdge服务器,从开箱到系统跑起来,整个过程走了一遍。我发现,虽然戴尔服务器的管理界面(iDRAC)和引导流程已经做得相当人性…

2026/8/16 21:27:44

AI花生智能施肥机监控系统

# AI花生智能施肥机监控系统 ## 项目概述 适配**银河麒麟、统信UOS**国产信创操作系统,C++ Qt开发花生专用精准施肥上位监控系统,严格遵循花生4大生育期农艺需肥规律:**基肥整地期、苗期、花针期、结荚饱果期**,花生忌氯、控氮增磷钾钙核心标准开发AI配肥决策算法。 集成土…

2026/8/16 21:27:44

铸造领域树脂砂轮|金利威多场景解决方案,20 + 配方覆盖全需求

铸造行业工况复杂、切割要求严苛,从碳钢、不锈钢到耐高温合金钢,不同材质、不同场景对砂轮的锋利度、耐用性、安全性都有极高标准。金利威深耕磨料磨具领域,针对铸造行业的多样化需求,打造出覆盖 20 规格型号的树脂砂轮产品矩阵&…

2026/8/16 21:22:42

OpenClaw服务保活实战:Heartbeat心跳与Cron定时任务配置指南

1. 项目概述:当OpenClaw遇到“心跳”与“闹钟” 最近在折腾OpenClaw这个AI智能体框架的朋友,估计不少人都卡在了一个看似不起眼,实则决定生死的问题上: 如何让这个“小龙虾”持续、稳定地活蹦乱跳? 你可能已经成功部…

2026/8/16 0:00:35

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:36

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/16 0:00:35

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:36

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/15 9:46:39

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/16 16:53:03

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/15 9:46:30

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…