天体表和数据框架#

Pandas 是一个流行的Python数据操作库,它提供 DataFrame 类似于 astropy.table .一个常见的问题是为什么Astropy不使用 DataFrame 作为基表对象。答案源于与天文数据和分析相关的许多特定领域要求。

单位和收件箱#

天文学是一门物理科学,数据通常有与之相关的单位。的 astropy.table 包原生支持 Quantity 列,这是将单元附加到阵列数据并执行单元感知操作的强大方法。此外,基地 Column 班级举行 unit 属性作为元数据,以允许跟踪未使用的应用程序的数据单位 Quantity .

Pandas does not provide support for units.

多维和结构化列#

天文学家处理通常存储在表格中的图像、光谱和其他多维数据。一个例子是具有每个源的图像缩略图和光谱的源目录。结构化列不太常见,但对于存储像 EarthLocation 在桌子上。

Pandas is not able to natively store multi-dimensional or structured columns.

通过元数据无损地表示FITS和VOTable数据#

astropy.table 包致力于提供FITS和VOTable数据的无损表示。这意味着,当您将FITS或VOTable文件读取到表中然后将其写回时,数据实际上是相同的。这是通过对表和列元数据的强大支持来实现的,该元数据允许存储和传播公共列信息(例如单位、描述和格式)。对于VOTable数据,会维护UCD等更多信息。

Pandas provides limited support for metadata, but as of late-2024 it is highlighted as "experimental" in the documentation.

时间和坐标#

时间和坐标是天文学的基础,占星术为它们提供了强大的支持 TimeSkyCoord 班时间和坐标数组可以本地存储在 astropy.table ,这意味着当将这些对象作为表中的列处理时,可以使用这些对象的全部功能。

Pandas supports timeseries data, but with key limitations:

  • 不支持闰秒。在许多情况下(例如计划观察),这种限制是不可接受的。

  • 熊猫时间以64位精度存储,这对于某些天文应用来说是不够的。Astropy使用128位精度的时间,以允许在宇宙年龄的亚纳秒精度。

  • 不同 time scales 在天文学中常见(例如,不支持TAI、UT 1)。

  • Time formats 不支持天文学中使用的FITS时间格式。

Pandas does not support sky coordinate columns.

对社区需求的响应#

astropy.table 该软件包由Astropy社区开发,重点关注天文学家和天体物理学家的需求。这意味着该包的开发可以响应该社区的需求,并且我们可以开发功能,而不受对Pandas更广泛用户群的潜在影响的限制。

互操作#

我们认识到Pandas是一个受欢迎的库,并且有很多用户熟悉它。因此,我们可以轻松地在 astropy.tableDataFrame ,如 与Pandas套餐对接 .这允许用户在上述限制范围内根据需要利用这两个软件包的功能。

我们还致力于通过更通用的DataFrame概念来支持互操作性,包括以下包 polars 越来越受欢迎。