Pandas“read_csv”方法使用的RAM太多

2024-05-14 16:32:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用Kaggle上的Rotten Tomatoes dataset,同时使用pandasDataFrame()操作数据。在

我已经实现了CountVectorizer(),从sklearn中提取特征(大小为5000)。然后,我将10万行功能和标签保存到.csv。更准确地说,.csv总共有100k行和5001列。 它的大小大约是1gb的内存。在

当我试图阅读.csv时,问题出现了:

pd.read_csv('train.csv', header=0, 
             delimiter=",", engine='c', na_filter=False, dtype=np.int64)

CSV解析器使用了太多RAM。我的系统有8gb的内存,这显然是不够的。在

有没有办法减少RAM的使用?我并不局限于熊猫图书馆。在


Tags: csv数据内存功能特征标签sklearndataset
1条回答
网友
1楼 · 发布于 2024-05-14 16:32:02

您可以尝试在pandas.read_csv中使用chunksize选项。它允许您成批处理数据,避免一次将所有数据加载到内存中。在处理每一批时,您可以去掉任何不必要的列,并将数据保存到一个新的、更细的对象中,您可以将其放入内存中。示例如下:

chunks = pd.read_csv('train.csv', header=0, delimiter=",", engine='c', na_filter=False, dtype=np.int64, chunksize=50000)

slim_data = []
for chunk in chunks:
    {do your processing here}
final_data = pd.concat(slim_data)

在这个例子中,每个区块是50000条记录,格式是pandas数据帧。然后迭代50000条记录的每个块,在这里可以对每个块进行处理,并将处理后的数据帧附加到一个新对象(slim_data)上,然后将所有块连接在一起,形成一个可以在建模中使用的最终数据帧。在

重申一下,只有在处理每批数据时,您正在删除数据元素或以更有效的方式表示数据元素,否则您将再次遇到内存问题,否则,上述操作才有效。然而,这将使您避免不得不同时将所有数据加载到内存中。在

相关问题 更多 >

    热门问题