gpt4 book ai didi

python - Pandas 数据框的最大大小

转载 作者:IT老高 更新时间:2023-10-28 20:41:36 28 4
gpt4 key购买 nike

我正在尝试使用 pandaread_csvread_stata 函数读取一个较大的数据集,但我一直遇到 内存错误s。数据框的最大大小是多少?我的理解是,只要数据适合内存,数据框就应该没问题,这对我来说应该不是问题。还有什么可能导致内存错误?

关于上下文,我正在尝试阅读 Survey of Consumer Finances 2007 , ASCII 格式(使用 read_csv)和 Stata 格式(使用 read_stata)。该文件大约 200MB 作为 dta,大约 1.2GB 作为 ASCII,在 Stata 中打开它告诉我有 5,800 个变量/列,用于 22,000 个观察/行。

最佳答案

我将按照评论中的讨论发布此答案。我已经看到它出现了很多次,但没有一个公认的答案。

内存错误很直观 - 内存不足。但有时这个错误的解决方案或调试令人沮丧,因为你有足够的内存,但错误仍然存​​在。

1) 检查代码错误

这可能是一个“愚蠢的步骤”,但这就是为什么它是第一步。确保没有无限循环或故意花费很长时间的事情(例如使用 os 模块来搜索整个计算机并将输出放入 excel 文件中)

2) 让您的代码更高效

按照步骤 1 进行。但如果简单的事情需要很长时间,通常会有一个模块或更好的方法来做一些更快、更高效的事情。这就是 Python 和/或开源语言的美妙之处!

3) 检查对象的总内存

第一步是检查一个对象的内存。 Stack上有很多关于这个的线程,所以你可以搜索它们。热门答案是 herehere

你总是可以使用 sys.getsizeof() 来计算对象的大小。 :

import sys
print(sys.getsizeof(OBEJCT_NAME_HERE))

现在错误可能在创建任何内容之前发生,但如果您以 block 的形式读取 csv,您可以看到每个 block 使用了多少内存。

4) 运行时检查内存

有时您有足够的内存,但您正在运行的函数在运行时会消耗大量内存。这会导致内存超出已完成对象的实际大小,从而导致代码/进程出错。实时检查内存很长,但可以做到。 Ipython 很好。查看 Their Document .

使用下面的代码直接在 Jupyter Notebook 中查看文档:

%mprun?
%memit?

使用示例:

%load_ext memory_profiler
def lol(x):
return x
%memit lol(500)
#output --- peak memory: 48.31 MiB, increment: 0.00 MiB

如果您需要有关魔术函数的帮助 This is a great post

5) 这个可能是第一个....但是检查一些简单的东西,比如位版本

在你的情况下,你运行的 python 版本的简单切换解决了这个问题。

通常上述步骤可以解决我的问题。

关于python - Pandas 数据框的最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23569771/

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