【发布时间】:2022-01-03 02:20:43
【问题描述】:
我正在为我的硕士学位做情绪分析,我正在 Ubuntu 20.04 上的 VSCode 上使用 jupyter nonotebook。我有一个问题:当我尝试加载我的文件(12gb)时,我的内核死了。所以我将我的文件分成 6 个,每个 2 gb,但在这种情况下,我也无法加载所有文件来创建数据框以便使用它。所以我想问我如何加载每个文件,创建一个数据库,然后将它们全部存储到一个数据框中以使用它? 我尝试以这种方式加载一个文件:
import pandas as pd
filename = pd.read_json("xaa.json", lines=True, chunksize= 200000)
在这种情况下内核没有死。从这一点来看,我怎样才能将此文件名保存到数据框中?我知道以这种方式我将一个文件拆分为许多 200000 行的文件,但我不知道如何将所有这些块存储到第一个数据帧中。 感谢您的关注,对于这个平庸的问题,我深表歉意。
【问题讨论】:
-
您想将每个 chunksize= 200000 添加到 csv 中吗?我理解正确吗?
-
感谢@RoseGod 的回答。我试图解释我想要什么:在每个文件中都有 1000000 行,但是如果我尝试将所有行与 for 循环一起导入,我在 Ubuntu 上的内核就会死掉。所以我想这样做,但我不知道如何将所有导入存储在数据框中。
-
问题是您必须将大量数据存储在数据框中。当您将数据加载到数据框中时,它会存储在您的 ram 中,并且因为您有太多数据,所以没有足够的 ram 导致它崩溃。解决方案是分块加载它并做你需要的问题是加载数据后你需要做什么?
-
谢谢@RoseGod,你的问题我一定会让你知道重点。此时我想将所有块(也许如果在每个文件中我有 1000000 行以这种方式我有 5 个 200000 块)存储到一个数据框中,因为我想对这个文本数据进行情感分析。一旦我有了数据框,我就可以对行和列进行操作来做我想做的一切。感谢您的耐心和关注。
-
您无法将所有文件存储到一个日期帧中,即使您以块的形式加载它也是如此,因为最终数据量超出了您的内存可以处理的范围。一种选择是获得更多内存,另一种选择是更改您的情绪分析,因此它不会在所有数据集上执行,而是在数据集的块上执行。这个问题也许可以帮助你scikit-learn: fitting data into chunks vs fitting it all at once。
标签: python json pandas jupyter-notebook