我必须处理hdf5文件。它们中的每一个都包含可以加载到由100列和近5E5行组成的pandas DataFrame中的数据。每个hdf5文件重约130MB。
因此,我想从hdf5文件中获取数据,然后应用一些处理,最后将新数据保存到csv文件中。在我的例子中,过程的性能非常重要,因为我必须重复它。
到目前为止,我一直专注于Pandas和Dask来完成这项工作。Dask对并行化很有好处,我会在更强大的PC和更多的CPU上获得更好的处理时间。
然而,你们中的一些人已经遇到了这个问题,并找到了最好的优化方案?
发布于 2021-02-23 01:35:11
正如其他人在评论中提到的那样,除非你必须将其移至CSV,否则我建议将其保留在HDF5中。但是,如果您确实需要执行转换,下面将说明您可能会如何执行此操作。
听起来像是有一个函数可以将HDF5文件加载到pandas数据框中。我建议使用dask应用程序接口创建延迟的熊猫数据帧列表,然后将它们转换为dask's delayed数据帧。下面的截图是从链接页面复制的,并添加了要保存到CSV的行。
import dask.dataframe as dd
from dask.delayed import delayed
from my_custom_library import load
filenames = ...
dfs = [delayed(load)(fn) for fn in filenames]
df = dd.from_delayed(dfs)
df.to_csv(filename, **kwargs)
有关保存到CSV的选项的信息,请参阅dd.to_csv()文档。
https://stackoverflow.com/questions/66306749
复制相似问题