使用python增量保存数据
我正在从事一个项目,其中产生了大量数据。我想要一种在运行时保存数据的方法,这样我就不必将所有数据都保存在RAM中。我目前正在使用numpy在程序完成时将所有内容保存在npz文件中。需要保存的是标量、列表和列表列表。列表中的值以增量方式添加到列表中,因此我需要一种附加到每个列表的方法,而无需将所有内容加载到内存中 我对python还是有点陌生,所以如果有一种标准的方法,请告诉我这个方向使用python增量保存数据,python,numpy,Python,Numpy,我正在从事一个项目,其中产生了大量数据。我想要一种在运行时保存数据的方法,这样我就不必将所有数据都保存在RAM中。我目前正在使用numpy在程序完成时将所有内容保存在npz文件中。需要保存的是标量、列表和列表列表。列表中的值以增量方式添加到列表中,因此我需要一种附加到每个列表的方法,而无需将所有内容加载到内存中 我对python还是有点陌生,所以如果有一种标准的方法,请告诉我这个方向 感谢PyTables是一个友好的numpy软件包,旨在将数据分页到磁盘,以便对内存中不适合的数据集进行操作 见:
感谢PyTables是一个友好的
numpy
软件包,旨在将数据分页到磁盘,以便对内存中不适合的数据集进行操作
见:
用法
演出
它对于跨多个数据行的计算特别有用
PyTables支持Blosc(这是一个巧妙的技巧)
您可以使用blosc和where
方法执行“内核内”查询
result = [row['col2'] for row in table.where(
'''(((col4 >= lim1) & (col4 < lim2)) |
((col2 > lim3) & (col2 < lim4)) &
((col1+3.1*col2+col3*col4) > lim5))''')]
result=[row['col2']表示表中的行。其中(
''((col4>=lim1)和(col4lim3)和(col2lim5))“”“)]
不确定“保存”的具体要求,但pickle是一个很好的库,至少可以快速转储标量变量。您也可以转储列表,但pickle(afaik)并不能解决您需要在不将所有内容加载到内存的情况下进行追加的问题。如果它是数据帧的一部分,我不确定您如何避免在内存中进行操作,除了可能只读取要操作的特定行。
result = [row['col2'] for row in table.where(
'''(((col4 >= lim1) & (col4 < lim2)) |
((col2 > lim3) & (col2 < lim4)) &
((col1+3.1*col2+col3*col4) > lim5))''')]