Pandas 中的内存错误
本篇文章探讨了 Pandas 中内存错误的概念。
什么是 Pandas 的内存错误
在使用 Pandas 时,分析师可能会遇到代码解释器抛出的多个错误。这些错误范围很广,可以帮助我们更好地调查问题。
在本篇文章中,我们旨在更好地了解 Pandas 引发的内存错误、引发该错误的原因以及解决该错误的潜在方法。
首先,让我们了解这个错误的含义。内存错误意味着你尝试访问的服务器或数据库上没有足够的内存来完成你希望执行的操作或任务。
此错误通常与数百 GB 的文件和 CSV 数据相关。了解导致此错误的原因并避免此类错误以拥有更多数据存储非常重要。
解决此错误还可以帮助开发具有适当规则管理的高效和彻底的数据库。
假设我们试图从一个包含超过 1000 GB 数据的 CSV 文件中获取数据,我们自然会遇到上面讨论的内存错误。这个错误可以在下面说明。
MemoryError
Press any key to continue . . .
有一种方法可以潜在地避免这种内存错误。但是,在我们这样做之前,让我们创建一个虚拟 DataFrame 来使用。
我们将此 DataFrame 称为 dat1。让我们使用以下代码创建此 DataFrame。
import pandas as pd
dat1 = pd.DataFrame(pd.np.random.choice(['1.0', '0.6666667', '150000.1'],(100000, 10)))
该查询创建从 0 到 9 索引的 10 列和 100000 个值。要查看数据中的条目,我们使用以下代码。
print(dat1)
上面的代码给出了以下输出。
0 1 2 ... 7 8 9
0 1.0 1.0 1.0 ... 150000.1 0.6666667 0.6666667
1 0.6666667 0.6666667 1.0 ... 0.6666667 150000.1 0.6666667
2 1.0 1.0 150000.1 ... 150000.1 1.0 150000.1
3 150000.1 0.6666667 0.6666667 ... 1.0 150000.1 1.0
4 150000.1 0.6666667 150000.1 ... 150000.1 0.6666667 0.6666667
... ... ... ... ... ... ... ...
99995 150000.1 150000.1 1.0 ... 150000.1 1.0 0.6666667
99996 1.0 1.0 150000.1 ... 0.6666667 0.6666667 150000.1
99997 150000.1 150000.1 1.0 ... 0.6666667 150000.1 0.6666667
99998 1.0 0.6666667 0.6666667 ... 0.6666667 1.0 150000.1
99999 1.0 0.6666667 150000.1 ... 1.0 150000.1 1.0
[100000 rows x 10 columns]
如何避免 Pandas 中的内存错误
现在让我们使用以下代码查看此 DataFrame 占用的总空间。
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
代码给出以下输出。
# 224544 (~224 MB)
为了避免在单个 DataFrame 上花费太多空间,让我们通过准确指定我们正在处理的数据类型来做到这一点。
这有助于我们减少所需的总内存,因为需要更少的空间来理解数据类型,并且可以将更多空间分配给正在考虑的实际数据。
我们可以使用以下查询来做到这一点。
df = pd.DataFrame(pd.np.random.choice([1.0, 0.6666667, 150000.1],(100000, 10)))
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
代码的输出如下。
# 79560 (~79 MB)
由于我们在这里通过不分配字符串将数据类型指定为 int
,因此我们成功地减少了数据所需的内存空间。
因此,我们通过本篇文章了解了关于 Pandas 中抛出的内存错误的含义、原因和潜在的解决方案。
相关文章
Python 中的第一类函数
发布时间:2023/04/25 浏览次数:113 分类:Python
-
第一类函数是被语言视为对象或变量的函数。 我们可以将它们分配给变量或将它们作为对象传递给其他函数。Python 支持第一类函数的功能。
Python 函数参数类型
发布时间:2023/04/25 浏览次数:140 分类:Python
-
在这篇 Python 文章中,我们将学习 Python 中使用的函数参数类型。 我们还将学习如何编写不带参数的 Python 函数。
Python 生成器中的 send 函数
发布时间:2023/04/25 浏览次数:111 分类:Python
-
本教程将介绍如何在 Python 中使用生成器的 send() 函数。我们可以创建一个像迭代器一样运行的函数,并且可以通过 Python 生成器函数在 for 循环中使用。
Python Functools 偏函数
发布时间:2023/04/25 浏览次数:80 分类:Python
-
本文介绍了我们如何使用分部函数,该函数随 functools 库一起提供,并附有示例。 这显示了调用时如何传递属性和部分函数。
Python main() 函数中的参数
发布时间:2023/04/25 浏览次数:157 分类:Python
-
在本教程结束时,我们应该了解Python 中在 main() 中使用参数是否是一种好的做法。
Python 中的内置 identity 函数
发布时间:2023/04/25 浏览次数:88 分类:Python
-
identity 函数只是一个返回其参数的函数。 当我们定义一个恒等函数并赋值时,它会返回该值。在本教程结束时,我们将了解 Python 是否具有内置的 identity 函数。
在 Python 中拟合阶跃函数
发布时间:2023/04/25 浏览次数:177 分类:Python
-
阶跃函数是带有看起来像一系列步骤的图形的方法。 它们由一系列中间有间隔的水平线段组成,也可以称为阶梯函数。本文给出了阶跃函数的简单演示。
在 Python 中创建双向链表
发布时间:2023/04/25 浏览次数:54 分类:Python
-
双向链表是指由称为节点的顺序链接的记录集组成的链接数据结构。 每个节点包含一个前一个指针、一个下一个指针和一个数据字段。
将 Python 类对象序列化为 JSON
发布时间:2023/04/25 浏览次数:152 分类:Python
-
本教程介绍序列化过程。 它还说明了我们如何使用 toJSON() 方法使 JSON 类可序列化,并包装 JSON 以转储到其类中。