我正在尝试读取 pandas 中的 40GB 文件并对其执行一些操作。 我正在使用 block ,但出现 MemoryError。 (系统RAM = 32 GB)
代码
df = pd.DataFrame()
for chunk in pd.read_csv('file.csv',low_memory = False, chunksize = 50000):
df = df.append(chunk)
我的代码应该如何读取大文件?
最佳答案
“DataFrame 的大小不能大于机器的 RAM。”
https://tomaugspurger.github.io/modern-8-scaling.html
如果您将 40GB 文件读入 32GB RAM,我认为这不起作用。您可以对 block 本身执行操作并将其保存,而不是立即对整个数据集执行操作吗?
顺便说一句,如果您从 block 构建一个 DataFrame,而不是在每次迭代中将每个 block 附加到同一个 DataFrame,那么将它们收集在列表中然后在最后将它们连接起来会更快。否则,Pandas 必须在每次迭代时创建一个新的海量数据框。
dfs = []
for chunk in pd.read_csv('file.csv',low_memory = False, chunksize = 50000):
dfs.append(chunk)
df = pd.concat(dfs)
关于pandas - MemoryError : Unable to allocate 11. 0 GiB,形状为 (120, 12300000) 且数据类型为对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67756455/