内存错误Python 64位

时间:2016-02-01 20:05:29

标签: python pandas sorting bigdata

我得到了一个"内存错误"在Python上尝试对Pandas数据帧进行排序然后将其保存在磁盘上时。

df = pd.read_hdf('big_df_file.h5')
df.sort_values(by='opt',inplace=True,kind='quicksort')
df.to_hdf('sorted.h5')

我的电脑有16 Gbs的RAM,数据文件是8 Gb。我不能没有得到"内存错误" ?

P.S。我正在使用quicksort,因为它是分配较少内存的排序算法。

Versions:
python: 2.7.11.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 94 Stepping 3, GenuineIntel
byteorder: little
LC_ALL: None
LANG: en_GB

pandas: 0.17.1

1 个答案:

答案 0 :(得分:0)

我们需要更多信息,MemoryError在什么阶段被调用?加载了哪种类型的数据?有多少是真的有必要进行排序?

但是我会尝试解决这个问题。

如果在read_hdf期间调用了错误,我建议可能会限制从文件加载的列数,例如,只加载索引列(或按行枚举推断),值列并执行排序。之后,您可以(可能)逐步将新数据写入文件。

更多" Hardcore"方法将是一个分而治之(二进制排序算法,如合并排序),只加载文件的一半(或四分之一,你决定什么效果最好,根据docs这可以通过传递开始和停止参数并执行选择的排序算法(合并排序或外部排序)。

this answer

提供了有关一般问题的更多信息