相关疑难解决方法(0)

为什么Pandas连接(pandas.concat)所以内存效率不高?

我有大约30 GB的数据(在大约900个数据帧的列表中),我试图连接在一起.我正在使用的机器是一个中等功能的Linux Box,大约256 GB的内存.但是,当我尝试连接我的文件时,我很快用完了可用的ram.我已经尝试了各种解决方法来解决这个问题(在较小批量中与for循环连接等)但我仍然无法将这些连接起来.两个问题浮现在脑海中:

  1. 还有其他人处理过此问题并找到了有效的解决方法吗?因为我需要的"列合并"(由于缺乏一个更好的词)的功能,我不能使用直追加join='outer'的说法pd.concat().

  2. 为什么Pandas连接(我知道它只是调用numpy.concatenate)因使用内存而效率低下?

我还应该注意到,我不认为问题是列的爆炸,因为将100个数据帧连接在一起会产生大约3000列,而基础数据帧大约为1000.

编辑:

我正在使用的数据是我的900个数据帧中的每一个大约1000列宽和大约50,000行深度的财务数据.从左到右的数据类型是:

  1. 日期字符串格式,
  2. string
  3. np.float
  4. int

......等等重复.我串连对列名的与外连接,这意味着在任何列df2不在df1不会被丢弃,而是分流到一边.


例:

 #example code
 data=pd.concat(datalist4, join="outer", axis=0, ignore_index=True)
 #two example dataframes (about 90% of the column names should be in common
 #between the two dataframes, the unnamed columns, etc are not a significant
 #number of the columns)

print datalist4[0].head()
                800_1     800_2   800_3  800_4               900_1     900_2  0 2014-08-06 09:00:00  BEST_BID  1117.1    103 2014-08-06 09:00:00  BEST_BID   
1 2014-08-06 09:00:00 …
Run Code Online (Sandbox Code Playgroud)

python ram numpy pandas

20
推荐指数
1
解决办法
1万
查看次数

标签 统计

numpy ×1

pandas ×1

python ×1

ram ×1