Data used for this tutorial:
  • 本教程使用 \(NO_2\) 空气质量数据,该数据由 OpenAQ 提供,并使用 py-openaq 包下载。

    air_quality_no2_long.csv 数据集提供了巴黎、安特卫普和伦敦的测量站点 FR04014BETR801London Westminster\(NO_2\) 值。

    To raw 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.

    air_quality_pm25_long.csv 数据集提供了巴黎、安特卫普和伦敦的测量站点 FR04014BETR801London Westminster\(PM_{25}\) 值。

    To raw data

如何合并来自多个表的数据#

连接对象#

../../_images/08_concat_row.svg
  • 我想将 \(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_no2no2 或来自表 air_quality_pm25pm25):

在这个具体的例子中,数据提供的 parameter 列确保了原始表格中的每一个都能被识别。情况并非总是如此。concat 函数通过 keys 参数提供了一个方便的解决方案,它增加了一个额外的(分层的)行索引。例如:

备注

多个行/列索引同时存在的情况在这些教程中没有被提及。分层索引MultiIndex 是一个高级而强大的 pandas 功能,用于分析更高维的数据。

多重索引不在本 pandas 入门介绍的范围之内。目前,请记住 reset_index 函数可以用来将索引的任何级别转换为列,例如 air_quality.reset_index(level=0)

To user guide

欢迎您在用户指南的 advanced indexing 部分深入了解多重索引的世界。

To user guide

有关表格连接(行和列)的更多选项,以及 concat 如何用于定义其他轴上索引的逻辑(并集或交集),请参阅 object concatenation 部分。

使用共同标识符连接表格#

../../_images/08_merge_left.svg
  • 将站点坐标(由站点元数据表提供)添加到测量表的相应行。

    警告

    空气质量测量站点的坐标存储在一个名为 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_onright_on 参数(而不是仅仅使用 on)来建立两个表之间的链接。

To user guide

pandas 也支持内连接、外连接和右连接。有关表连接/合并的更多信息,请参阅用户指南的 database style merging of tables 部分。或查看 comparison with SQL 页面。

REMEMBER

  • 可以使用 concat 函数按列和按行连接多个表。

  • 对于数据库风格的表合并/连接,请使用 merge 函数。

To user guide

有关合并数据表的各种:ref:facilities to combine data tables <merging>