两者都提供了广泛的工具和优势,这可能会让我们在某些时候怀疑选择两者中的哪一个。这并不是要改变公司的所有流程,以便他们开始使用 Polars 或 Pandas“死亡”(这不会在不久的将来发生)。这是关于了解其他可以帮助我们降低流程成本和时间、获得相同或更好结果的工具。
当我们使用云服务时,我们会优先考虑某些因素,包括其成本。我用于此过程的服务是带有 Python 3.10 运行时的 AWS Lambda 和用于存储原始文件和 parquet 转换文件的 S3。
目的是获取 CSV 文件作为原始数据,并使用 pandas 和 Polars 对其进行处理,以验证这两个库中的哪一个可以为我们提供更好的资源优化,例如内存和结果文件的重量。
熊猫
它是一个专门用于数据操作和分析的 Python 库,它是用 C 编写的,最初发布于 2008 年。
*极地*
它是一个专门从事数据操作和分析的 Python 和 Rust 库,允许并行处理,主要用 Rust 编写,于 2022 年发布。
流程架构:
该项目有点简单,如架构所示:用户将 CSV 文件存入 work/pandas 或 work/porlas 中,并自动启动 s3 触发器来处理该文件,将其转换为 parquet 并将其存入processed。
在这个小项目中,我使用了两个具有以下配置的 lambda:
内存:2GB
临时内存:2 GB
续航时间:600秒
要求
Lambda 与 pandas:Pandas、Numpy 和 Pyarrow
Lambda 与极轴:极轴
用于比较的数据集可以在 kaggle 上以“Rotten Tomatoes Movie Reviews – 1.44M rows”的名称找到,或者可以从这里下载。
完整的存储库可在 GitHub 上找到,并且可以在此处克隆。
尺寸或重量
Pandas 使用的 lambda 需要另外两个插件来创建 parquet 文件,在本例中是 PyArrow 和我使用的 Pandas 版本的特定版本的 numpy。结果,我们获得了一个权重或大小为 74.4 MB 的 lambda,这非常接近 AWS 允许我们的 lambda 权重的限制。
带有 Polars 的 lambda 不需要像 PyArrow 这样的其他插件,它简化了生活并将 lambda 的大小减少到一半以下。因此,与第一个 lambda 相比,我们的 lambda 的权重或大小为 30.6 MB,为我们提供了安装转换过程可能需要的其他依赖项的空间。
表演
在第一个版本之后,带有 Pandas 的 lambda 被优化为使用压缩,但是,它的行为也被分析了。
熊猫
与其他版本相比,处理数据集花了 18 秒,并使用了 1894 MB 内存来处理 CSV 文件并生成 Parquet 文件,这是使用时间和资源最多的版本。
熊猫+压缩
添加一行代码使我们比之前的版本(Pandas)有了一点改进,处理数据集花了 17 秒,使用了 1837 MB,这并不代表处理和计算时间的显着改进,而是大小的显着改进。生成的文件。
北极
处理相同的数据集花了 12 秒,我只使用了 1462 MB,与前两个相比,它节省了 44.44% 的时间并降低了内存消耗。
输出文件大小
熊猫
未建立压缩过程的 lambda 生成了 177.4 MB 的 parquet 文件。
Pandas + Kompression
Beim Konfigurieren der Komprimierung im Lambda erzeuge ich keine 121,1 MB große Parkettdatei. Eine kleine Zeile oder Option hat uns geholfen, die Dateigröße um 31,74 % zu reduzieren. Wenn man bedenkt, dass es sich nicht um eine wesentliche Codeänderung handelt, ist es eine sehr gute Option.
Polare
Polars hat eine 105,8 MB große Datei generiert, die beim Kauf mit der ersten Version von Pandas eine Einsparung von 40,36 % bzw. 12,63 % gegenüber der Pandas-Version mit Komprimierung darstellt.
Fazit
Es ist nicht notwendig, alle internen Prozesse, die Pandas verwenden, so zu ändern, dass sie jetzt Polars verwenden. Es ist jedoch wichtig zu bedenken, dass uns die Verwendung von Polars nicht nur bei der Bereitstellung hilft, wenn wir über Tausende oder Millionen von Lambda-Ausführungen sprechen Zeit, wird uns aber auch dabei helfen, geringere Kosten zu erzielen, da AWS für serverlose Dienste wie Lambda eine zeitbasierte Abrechnung vornimmt.
Wenn wir diese 40,36 % in Millionen von Dateien umrechnen, sprechen wir ebenfalls von GB oder TB, etwas, das innerhalb eines Datalake- oder Dataware-Hauses oder sogar in einem Cold-File-Storage erhebliche Auswirkungen hätte.
Die Reduzierung mit Polars wäre nicht nur auf diese beiden Faktoren beschränkt, da sie sich stark auf die Ausgabe von Daten und/oder Objekten von AWS auswirken würde, da es sich um einen kostenpflichtigen Dienst handelt.
Das obige ist der detaillierte Inhalt vonWas ist schneller und günstiger, um Dateien in AWS zu konvertieren: Polar oder Pandas?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!