Pandas 将许多大熊猫数据帧保存到单个拼花文件中,而无需加载到内存中

Pandas 将许多大熊猫数据帧保存到单个拼花文件中,而无需加载到内存中,pandas,dataframe,parquet,pyarrow,fastparquet,Pandas,Dataframe,Parquet,Pyarrow,Fastparquet,我想尝试将许多无法立即放入内存的大熊猫数据帧保存到单个拼花地板文件中。我们希望在磁盘上有一个大拼花文件,以便快速从这个大文件中获取所需的列 具体来说,我们有约200个小拼花文件,每个文件有约100列(基因)和200万行(细胞)。磁盘上的每个拼花都非常小,对于所有约200个拼花文件,其大小分别为~40MB和~8GB。数据非常稀疏(大于90%的值为零),Parquet很好地将磁盘上的数据压缩到一个小尺寸 由于数据集是稀疏的,我们可以使用Pandas/Scipy稀疏数组将所有25000个基因(列)和2

我想尝试将许多无法立即放入内存的大熊猫数据帧保存到单个拼花地板文件中。我们希望在磁盘上有一个大拼花文件,以便快速从这个大文件中获取所需的列

具体来说,我们有约200个小拼花文件,每个文件有约100列(基因)和200万行(细胞)。磁盘上的每个拼花都非常小,对于所有约200个拼花文件,其大小分别为~40MB和~8GB。数据非常稀疏(大于90%的值为零),Parquet很好地将磁盘上的数据压缩到一个小尺寸

由于数据集是稀疏的,我们可以使用Pandas/Scipy稀疏数组将所有25000个基因(列)和200万行(细胞)加载到单个稀疏数据结构中。但是,我们无法将SparFrame直接写入拼花地板(参见Github问题),将整个矩阵转换为稠密矩阵将导致内存不足(例如,2000列/基因和200万行/单元的稠密阵列占用30GB内存)。这使我们无法制作所需的单个大型拼花地板锉刀


Peter Hoffmann的演示(16分钟20秒)提到,您可以将数据流式传输到拼花地板文件(保留元数据记录),而无需将所有数据保留在内存中。可以将列/行流式处理到拼花地板文件中吗?我找不到一个使用熊猫的例子。PyArrow或FastParquet是否支持此功能?

此问题提出了类似的问题,但他们似乎希望从Parquet文件中导入数据。出于我们的目的,从一个大的拼花地板文件中导入数据只能通过读取选定的列来完成。这个问题提出了一个类似的问题,但他们似乎希望从拼花地板文件中导入数据。出于我们的目的,从一个大的拼花地板文件中输入数据可以通过读取选定的列来完成。