我有17,000个CSV文件,每个文件按时间戳排序(有些文件缺少数据)。总的CSV文件大约有85GB,比我的32GB内存大得多。
我正试图找出最好的方法来把这些变成一个时间对齐的,内存不足的数据结构,这样我就可以计算像PCA这样的东西。
正确的方法是什么?
(我试图设置一个xarray.DataSet
,与dim=(filename, time)
,然后我试图xr.merge()
上的每个CSV文件到数据集,但它变得越来越慢,每次插入,我预计它会崩溃,当RAM用完。)
您试过dd.read_csv(...)
了吗?
Dask以惰性方式读取csv,并且可以以流式方式执行某些操作,因此您可以在大于内存的数据集上运行分析。
确保Dask能够在读取数据时正确设置分区。一旦数据被读取,检查dd.divisions
并确保它们是值。
当然,你也可以使用Dask集群来访问更多的内存。
这些文件非常小,Dask通常在100MB左右的分区上工作得最好。你可能想要压缩你的数据。