我有一个非常大的 CSV 文件,大小为 1TB。我想转换为极坐标数据帧,但生成数据帧需要 > ~15 分钟。
我怎样才能更有效地做到这一点?文件的大小很可能会更大,因此可能需要更长的时间。有什么有效的方法可以减少或缩短计算时间吗?
我尝试过在 Polars 读取 csv 功能期间使用
n_threads
,但仍然没有多大帮助,只减少了 1 分钟。
import polars as pl
csv = pl.read_csv("path to csv file", n_threads=4, ignore_errors = True)
Polars 已经尽可能快地解析 csv 文件。它已经使用了所有线程,因此尝试旋转单独的进程只会损害性能。
您可以设置
rechunk=False
。这将节省阅读后昂贵的重新分配。
您可以尝试的其他方法是将架构设置为较小的数据类型,这样您将拥有更少的内存和缓存压力。
如果您对如何编写此文件有发言权,您应该去/索要 parquet 文件。这将减少文件大小并加快读取速度,特别是当您不需要数据集的所有列时。