使用大型数据集时发生内存错误

问题描述 投票:0回答:1

我有3个numpy数组的插值数据。

Each of Length - 107952899

Problem Facing

当我把这三个numpy数组合作为pandas df时,我得到了MemoryError

Reason for converting to df

我必须做一些计算,熊猫让它更容易,所以我更喜欢用熊猫做。我相信三个numpy阵列的内存大小超过3 Gb甚至更多。

System Details:

8Gb RAM python 3.6.3

Requirement

我理解这种错误的原因但是有没有可能避免MemoryError,或者其他一些最佳实践要遵循?

python pandas numpy error-handling out-of-memory
1个回答
2
投票

当我将这三个numpy数组合为pandas df时,我得到了MemoryError。

让我们说你这样做:

import numpy as np
import pandas as pd

big_array_1 = np.array(np.random.random(10**7))
big_array_2 = np.array(np.random.random(10**7))
big_array_3 = np.array(np.random.random(10**7))

在我的电脑上,它需要大约300 MB的内存。

如果我这样做:

df = pd.DataFrame([big_array_1,big_array_2, big_array_3])

内存高达9Gb的内存。如果你乘以因子10(得到你的3 Gb数据而不是我的300),你将达到90 Gb,这可能比你的Ram +可用交换更多,这将提高MemoryError

但如果相反,你做:

df = pd.DataFrame({"A":big_array_1, "B": big_array_2, "C":big_array_3})

然后你的内存使用量不会比你的三个数组大得多。

我怀疑这是你的问题......

© www.soinside.com 2019 - 2024. All rights reserved.