使用Python从hdf5文件到csv文件

使用Python从hdf5文件到csv文件,python,pandas,csv,dask,hdf5,Python,Pandas,Csv,Dask,Hdf5,我必须处理hdf5文件。它们中的每一个都包含可以加载到由100列和近5E5行组成的数据帧中的数据。每个hdf5文件的重量约为130MB 因此,我想从hdf5文件中获取数据,然后应用一些处理,最后将新数据保存到csv文件中。在我的例子中,过程的性能非常重要,因为我必须重复它 到目前为止,我一直专注于熊猫和达斯克来完成这项工作。Dask有利于并行化,我将通过更强大的PC和更多的CPU获得更好的处理时间 然而,你们中的一些人已经遇到了这个问题,并找到了最佳的优化方法?正如其他人在评论中提到的,除非您必

我必须处理hdf5文件。它们中的每一个都包含可以加载到由100列和近5E5行组成的数据帧中的数据。每个hdf5文件的重量约为130MB

因此,我想从hdf5文件中获取数据,然后应用一些处理,最后将新数据保存到csv文件中。在我的例子中,过程的性能非常重要,因为我必须重复它

到目前为止,我一直专注于熊猫和达斯克来完成这项工作。Dask有利于并行化,我将通过更强大的PC和更多的CPU获得更好的处理时间


然而,你们中的一些人已经遇到了这个问题,并找到了最佳的优化方法?

正如其他人在评论中提到的,除非您必须将其移动到CSV,否则我建议将其保留在HDF5中。然而,下面是一个如何做的描述,如果你必须执行转换

听起来您有一个将HDF5文件加载到数据帧的功能。我建议使用API创建延迟数据帧列表,然后将其转换为dask数据帧。下面截取的内容是从链接页面复制的,并添加一行保存到CSV

导入dask.dataframe作为dd
来自dask。延迟导入延迟
从我的自定义库导入加载
文件名=。。。
dfs=[文件名中fn的延迟(加载)(fn)]
df=从延迟(dfs)开始的dd
df.to_csv(文件名,**kwargs)

有关保存为CSV的选项的信息,请参阅文档。

欢迎使用StackOverflow!如果没有更多的细节,很难提供具体的指导。你的问题可能会被否决或关闭,因为它是非常开放的。总的来说,我认为dask和pandas是很好的库,而且将大量数据从HDF5转换为CSV涉及从用于大容量数据的压缩二进制存储格式转换为易于编码错误和其他问题的人类可读的低效存储格式。如果你必须这样做,那么你可能已经有了正确的开始。但我唯一的建议是尽量不要这样做:)祝你好运@Michael Delgado对HDF5与CSV的文件大小和性能提出了很好的看法。另一个注意事项:您现在必须跟踪HDF5文件和导出的CSV文件。只有在必要的时候你才应该这样做。否则,最好编写代码以本机格式读取HDF5数据。感谢@Michael Delgado和@kcw78的评论。你是对的。如果有人想知道使用csv文件而不是hdf5是否有趣,那么您的评论为不选择此选项提供了很好的理由。如果不必这样做,我不会将hdf5转换为csv。谢谢@natemcintosh。您关于使用延迟Dask的建议似乎是相关的。我可以把我的HDF5文件设置为一个集合,它可以被加载到一个D.F.Office延迟的单个数据框DASK中。然后在这个数据帧上执行df.apply更有效。因此,与单独处理hdf5文件相比,我获得了8%的时间处理增益。不幸的是,我的处理df.apply返回了pandas.Series,我很难生成csv文件,这可以通过dd.to_延迟方法完成。不管怎样,根据你和迈克尔·德尔加多的说法,熊猫和达斯克的选择是好的。我会深入研究的。