-
Air quality Nitrate data
本教程使用 \(NO_2\) 空气质量数据,该数据由 OpenAQ 提供,并使用 py-openaq 包下载。
To raw dataair_quality_no2_long.csv数据集提供了巴黎、安特卫普和伦敦的测量站点 FR04014、BETR801 和 London Westminster 的 \(NO_2\) 值。 -
Air quality Particulate matter data
For this tutorial, air quality data about Particulate matter less than 2.5 micrometers is used, made available by OpenAQ and downloaded using the py-openaq package.
To raw dataair_quality_pm25_long.csv数据集提供了巴黎、安特卫普和伦敦的测量站点 FR04014、BETR801 和 London Westminster 的 \(PM_{25}\) 值。
如何合并来自多个表的数据#
连接对象#
我想将 \(NO_2\) 和 \(PM_{25}\) 的测量值(两个结构相似的表)合并到一个表中。
The
concat()function performs concatenation operations of multiple tables along one of the axes (row-wise or column-wise).
默认情况下,连接沿轴 0 进行,因此结果表合并了输入表的行。让我们检查原始表和连接后表的形状以验证操作:
因此,最终得到的表格有 3178 = 1110 + 2068 行。
备注
axis 参数将在 pandas 的多个方法中返回,这些方法可以 沿着一个轴 应用。DataFrame 有两个对应的轴:第一个轴垂直向下穿过行(轴 0),第二个轴水平穿过列(轴 1)。大多数操作,如连接或汇总统计,默认是沿着行(轴 0)进行的,但也可以沿着列进行。
在日期时间信息上对表格进行排序,还可以说明两个表格的组合,其中 parameter 列定义了表格的来源(来自表 air_quality_no2 的 no2 或来自表 air_quality_pm25 的 pm25):
在这个具体的例子中,数据提供的 parameter 列确保了原始表格中的每一个都能被识别。情况并非总是如此。concat 函数通过 keys 参数提供了一个方便的解决方案,它增加了一个额外的(分层的)行索引。例如:
备注
多个行/列索引同时存在的情况在这些教程中没有被提及。分层索引 或 MultiIndex 是一个高级而强大的 pandas 功能,用于分析更高维的数据。
多重索引不在本 pandas 入门介绍的范围之内。目前,请记住 reset_index 函数可以用来将索引的任何级别转换为列,例如 air_quality.reset_index(level=0)
欢迎您在用户指南的 advanced indexing 部分深入了解多重索引的世界。
有关表格连接(行和列)的更多选项,以及 concat 如何用于定义其他轴上索引的逻辑(并集或交集),请参阅 object concatenation 部分。
使用共同标识符连接表格#
将站点坐标(由站点元数据表提供)添加到测量表的相应行。
警告
空气质量测量站点的坐标存储在一个名为
air_quality_stations.csv的数据文件中,该文件是使用 py-openaq 包下载的。备注
本例中使用的站点(FR04014、BETR801 和 London Westminster)只是元数据表中列出的三个条目。我们只想将这三个站点的坐标添加到测量表中,分别添加到
air_quality表的相应行。使用
merge()函数,对于air_quality表中的每一行,都会从air_quality_stations_coord表中添加相应的坐标。两个表都有一个共同的location列,该列用作组合信息的键。通过选择left连接,最终表格中只包含air_quality``(左侧)表中可用的位置,即 FR04014、BETR801 和 London Westminster。``merge函数支持多个连接选项,类似于数据库风格的操作。
将参数的全描述和名称(由参数元数据表提供)添加到测量表中。
警告
空气质量参数元数据存储在一个名为
air_quality_parameters.csv的数据文件中,该文件是使用 py-openaq 包下载的。与前面的例子相比,这里没有共同的列名。但是,
air_quality表中的parameter列和air_quality_parameters_name中的id列都以通用格式提供了测量变量。这里使用了left_on和right_on参数(而不是仅仅使用on)来建立两个表之间的链接。
pandas 也支持内连接、外连接和右连接。有关表连接/合并的更多信息,请参阅用户指南的 database style merging of tables 部分。或查看 comparison with SQL 页面。
REMEMBER
可以使用
concat函数按列和按行连接多个表。对于数据库风格的表合并/连接,请使用
merge函数。
有关合并数据表的各种:ref:facilities to combine data tables <merging> 。