gpt4 book ai didi

python - Pandas `read_csv` 方法使用过多 RAM

转载 作者:行者123 更新时间:2023-11-28 22:25:22 28 4
gpt4 key购买 nike

我目前正在玩 Rotten Tomatoes datasetKaggle 上使用 pandas DataFrame() 来操作数据。

我已经从 sklearn 中实现了 CountVectorizer() 来提取特征(大小为 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,这显然是不够的。

有什么方法可以减少 RAM 使用量吗?我不受限于 pandas 库。

最佳答案

您可以尝试在 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)

在示例中,每个 block 都是 50,000 条采用 pandas DataFrame 格式的记录。然后,您遍历 50,000 条记录的每个 block ,您可以在其中对每个 block 进行处理,并将处理后的 DataFrame 附加到一个新对象(slim_data 作为上面的示例),然后将所有 block 连接成一个您可以在建模中使用的最终 DataFrame。

重申一下,只有在处理每批数据时删除数据元素或以更有效的方式表示数据元素时,以上方法才有效,否则您将再次遇到内存问题。但是,这将使您不必一次将所有数据加载到内存中。

关于python - Pandas `read_csv` 方法使用过多 RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532711/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com