我试图使用panda
sread_csv
或read_stata
函数读取稍大的数据集,但我一直遇到Memory Error
s。数据框的最大大小是多少?我的理解是,只要数据适合内存,数据帧就应该可以,这对我来说不是问题。还有什么可能导致内存错误?
就上下文而言,我试图在《2007年消费者金融调查》中阅读ASCII格式(使用read_csv
)和Stata格式(使用read_stata
)。该文件的dta大小约为200MB,而ASCII的大小约为1.2GB,在Stata中打开该文件将告诉我,对于22,000个观察值/行,有5,800个变量/列。
我将按照评论中的说明发布此答案。我已经看到它多次出现而没有被接受的答案。
内存错误很直观-内存不足。但是有时,由于您有足够的内存,因此对该错误的解决方案或调试令人沮丧,但该错误仍然存在。
1)检查代码错误
这可能是一个“愚蠢的步骤”,但这就是为什么它是第一个原因。确保没有无限循环或已知会花费很长时间的事情(例如使用某些os
模块来搜索整个计算机并将其输出到excel文件中)
2)使您的代码更高效
遵循步骤1的步骤。但是,如果简单的事情需要花费很长时间,则通常可以使用模块或更好的方式来完成更快,更高效的内存。这就是Python和/或开源语言的美!
3)检查对象的总内存
第一步是检查对象的内存。关于此,Stack上有很多线程,因此您可以搜索它们。热门答案在这里和这里
要找到被咬的物体的大小,您可以随时使用sys.getsizeof()
:
import sys
print(sys.getsizeof(OBEJCT_NAME_HERE))
现在,错误可能会在创建任何东西之前发生,但是如果您分块读取csv,则可以看到每个块正在使用多少内存。
4)运行时检查内存
有时您有足够的内存,但是正在运行的功能在运行时会占用大量内存。这将导致内存峰值超过完成对象的实际大小,从而导致代码/过程出错。实时检查内存很长,但是可以完成。Ipython很好。检查他们的文件。
使用以下代码直接在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
5)这可能是第一个。。。。。
与您的情况一样,只需切换所运行的python版本即可解决此问题。
通常上述步骤可以解决我的问题。
问题内容: 我在将大写字母应用于DataFrame中的列时遇到麻烦。 数据框为。 是需要应用大写的列标题。 问题是值由三个字母和三个数字组成。例如是值之一。 我收到一个错误: 如何将大写字母应用于DataFrame列中的前三个字母? 问题答案: 这应该工作: 并且您是否希望所有名称都使用大写格式:
问题内容: 我正在处理一个大型文本文件(500k行),其格式如下: 我正在使用下面的代码返回每个系列的相关系数,例如S!_A16: 但是,在一些大文件上,这将返回错误: 我了解这与该声明有关,但是如何解决? 编辑 :这与最大行数有关。有谁知道如何容纳更多的行? 问题答案: 错误信息: 说负一个是TypeError。如果查看回溯中的倒数第二行,您会发现唯一的减法是 所以一定是。如果您进入857号线附
问题内容: 但是,即使该组中有多个具有最大值的记录,我也只需要每组一个记录。 在下面的示例中,我需要一条记录用于“ s2”。对我来说,哪一个都没关系。 问题答案: 您可以使用 设置来实现你的目标 再次更新 很抱歉误解您的意思。如果您要一个组中最大数量的组,可以先对其进行排序
本文向大家介绍将大写应用于Python中Pandas数据框中的列,包括了将大写应用于Python中Pandas数据框中的列的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将看到如何在DataFrame中使名称列变为大写。让我们看看实现目标的不同方法。 示例 我们可以使用upper()方法将其大写,从而为DataFrame分配一列。 让我们看一下代码。 输出结果 如果运行上面的程序,您将得
我找到了关于如何计算neo4j数据库大小的以下信息:https://neo4j.com/developer/guide-sizing-and-hardware-calculator/#_disk_storage
几个月来,我在学习熊猫的过程中,一直在努力想出这个问题的答案。我在日常工作中使用SAS,它的核心支持很棒。然而,SAS作为一个软件是可怕的,还有许多其他原因。 有一天我希望用python和pandas取代我对SAS的使用,但我目前缺少一个用于大型数据集的非核心工作流。我说的不是需要分布式网络的“大数据”,而是大到内存放不下但小到硬盘驱动器放不下的文件。 我的第一个想法是使用在磁盘上保存大型数据集,