我有一个100M的CSV文件(实际上是许多单独的CSV文件),总计84GB。我需要将其转换为具有单个float数据集的HDF5文件。我在测试中使用
h5py 时没有任何问题,但是现在我无法在没有内存不足的情况下完成最终数据集。
如何在不必将整个数据集存储在内存中的情况下写入HDF5?我期望这里有实际的代码,因为它应该很简单。
我只是在研究 pytables ,但看起来数组类(与HDF5数据集相对应)不能被迭代地写入。同样, pandas在中
具有read_csv
和to_hdf
方法io_tools
,但是我无法一次加载整个数据集,因此无法正常工作。也许您可以使用pytables或pandas中的其他工具来帮助我正确解决问题。
用于append=True
呼叫to_hdf
:
import numpy as np
import pandas as pd
filename = '/tmp/test.h5'
df = pd.DataFrame(np.arange(10).reshape((5,2)), columns=['A', 'B'])
print(df)
# A B
# 0 0 1
# 1 2 3
# 2 4 5
# 3 6 7
# 4 8 9
# Save to HDF5
df.to_hdf(filename, 'data', mode='w', format='table')
del df # allow df to be garbage collected
# Append more data
df2 = pd.DataFrame(np.arange(10).reshape((5,2))*10, columns=['A', 'B'])
df2.to_hdf(filename, 'data', append=True)
print(pd.read_hdf(filename, 'data'))
产量
A B
0 0 1
1 2 3
2 4 5
3 6 7
4 8 9
0 0 10
1 20 30
2 40 50
3 60 70
4 80 90
请注意,您需要format='table'
在第一个调用中使用df.to_hdf
以使表可追加。否则,'fixed'
默认情况下为格式,这对于读写来说是更快的,但是会创建一个不能追加的表。
因此,您可以一次处理一个CSV,用于append=True
构建hdf5文件。然后覆盖DataFrame或用于del df
允许对旧DataFrame进行垃圾回收。
另外,df.to_hdf
您也可以将其附加到HDFStore上,而不用调用:
import numpy as np
import pandas as pd
filename = '/tmp/test.h5'
store = pd.HDFStore(filename)
for i in range(2):
df = pd.DataFrame(np.arange(10).reshape((5,2)) * 10**i, columns=['A', 'B'])
store.append('data', df)
store.close()
store = pd.HDFStore(filename)
data = store['data']
print(data)
store.close()
产量
A B
0 0 1
1 2 3
2 4 5
3 6 7
4 8 9
0 0 10
1 20 30
2 40 50
3 60 70
4 80 90
问题内容: 我正在尝试做的事情似乎不仅应该很简单地完成,而且应该是足够普通的任务,以至于可以使用简单的程序包来完成它。我希望获取一个大型CSV文件(从关系数据库表中导出),并将其转换为JavaScript对象数组。此外,我想将其导出到文件装置中。 CSV示例: 所需的JSON: 我已经尝试了几个节点CSV解析器,流媒体,自称CSV到JSON的库,但是似乎无法获得想要的结果,或者如果文件较小,它是否
问题内容: 我想将从下面的脚本中获取的HTML表转换为CSV文件,但是出现如下类型错误: TypeError:序列项0:预期的字符串,找到标记 将其转换为CSV文件的最简单方法是什么?我尝试为: 但它写了“无” HTML是这样的: 问题答案: 这是csv lib的工作,将每一个td放入每一行并提取文本,它将处理每一行中缺少值的地方: 与您在页面上看到的表格完全匹配的表格: 如果您想使用字幕: 但是
问题内容: 有谁知道是否有可以让我将XLS最好转换为JSON的应用程序? 我还将为CSV转换程序做准备,因为如果周围什么都没有的话,我可能最终不得不写自己。 问题答案: 这对我来说效果很好,不需要上传文件: https://github.com/cparker15/csv-to- json?files=1
问题内容: 如何使用模块将带有定界符的CSV文件转换为XLS(Excel工作表)? 问题答案: 好吧,你去…
问题内容: 如何将数组转换为CSV文件? 这是我的数组: 问题答案: 我正在使用以下功能;它是对fputscsv注释中的man条目之一的改编。而且您可能想要展平该数组;不知道如果您传递一个多维的行会发生什么。
问题内容: 我尝试使用json格式的文件作为输入。这是示例数据的片段。 可以在r中使用这种复杂的json格式制作一个csv,以便更平滑地处理数据吗? 例如,有以下基本类别:基本信息照片创建者位置类别网址 可以制作带有basic_information.id,creator.id等子类别类别的csv文件吗? 问题答案: 在研究您的答案时,我在评论中张贴了一些链接,但现在我非常确信这是解决问题的方法。