小编Vid*_*dac的帖子

pandas.concat和numpy.append的大数据集的内存错误

我面临一个问题,我必须在循环中生成大型DataFrames(每次两次2000 x 800 pandas DataFrames时计算50次迭代).我想将结果保存在更大的DataFrame或类似字典的结构中.使用pandas.concat时,我在循环中的某个时刻出现内存错误.使用numpy.append将结果存储在numpy数组的字典中而不是DataFrame中时,会发生同样的情况.在这两种情况下,我仍然有很多可用内存(几GB).对于大熊猫或numpy来说,这个数据太多了吗?有没有更节省内存的方法来存储我的数据而不将其保存在磁盘上?

例如,以下脚本一旦nbIds大于376 就会失败:

import pandas as pd
import numpy as np
nbIds = 376
dataids = range(nbIds)
dataCollection1 = []
dataCollection2 = []
for bs in range(50):
    newData1 = pd.DataFrame( np.reshape(np.random.uniform(size = 
                                                          2000 * len(dataids)), 
                                        (2000,len(dataids ))))
    dataCollection1.append( newData1 )
    newData2 = pd.DataFrame( np.reshape(np.random.uniform(size = 
                                                          2000 * len(dataids)), 
                                        (2000,len(dataids ))))
    dataCollection2.append( newData2 )
dataCollection1 = pd.concat(dataCollection1).reset_index(drop = True)
dataCollection2 = pd.concat(dataCollection2).reset_index(drop = True)
Run Code Online (Sandbox Code Playgroud)

nbIds665或更高时,以下代码失败

import pandas as pd
import numpy as np …
Run Code Online (Sandbox Code Playgroud)

python numpy python-2.7 pandas

5
推荐指数
2
解决办法
2万
查看次数

标签 统计

numpy ×1

pandas ×1

python ×1

python-2.7 ×1