我试图做一些相当简单的事情,将一个大型的 csv 文件读入熊猫数据框。
data = pandas.read_csv(filepath, header = 0, sep = DELIMITER,skiprows = 2)
代码要么因为 MemoryError
而失败,要么就永远不会结束。
任务管理器中的内存使用量停止在506Mb,5分钟后没有变化,进程中没有 CPU 活动,我停止了它。
我使用的是熊猫版本0.11.0。
我知道文件解析器曾经存在一个内存问题,但是根据 译自: 美国《 http://wesmckinney.com/blog/?p=543》杂志网站(http://wesmckinney.com/blog/,这个问题应该已经被修复了。
我正在尝试读取的文件是366 Mb,上面的代码工作,如果我把文件减少到一些短(25 Mb)。
还有一次,我收到一个弹出窗口,告诉我它不能写地址0x1e0baf93..。
堆栈跟踪:
Traceback (most recent call last):
File "F:\QA ALM\Python\new WIM data\new WIM data\new_WIM_data.py", line 25, in
<module>
wimdata = pandas.read_csv(filepath, header = 0, sep = DELIMITER,skiprows = 2
)
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\io\parsers.py"
, line 401, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\io\parsers.py"
, line 216, in _read
return parser.read()
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\io\parsers.py"
, line 643, in read
df = DataFrame(col_dict, columns=columns, index=index)
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\frame.py"
, line 394, in __init__
mgr = self._init_dict(data, index, columns, dtype=dtype)
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\frame.py"
, line 525, in _init_dict
dtype=dtype)
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\frame.py"
, line 5338, in _arrays_to_mgr
return create_block_manager_from_arrays(arrays, arr_names, axes)
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\internals
.py", line 1820, in create_block_manager_from_arrays
blocks = form_blocks(arrays, names, axes)
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\internals
.py", line 1872, in form_blocks
float_blocks = _multi_blockify(float_items, items)
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\internals
.py", line 1930, in _multi_blockify
block_items, values = _stack_arrays(list(tup_block), ref_items, dtype)
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\internals
.py", line 1962, in _stack_arrays
stacked = np.empty(shape, dtype=dtype)
MemoryError
Press any key to continue . . .
一点背景知识——我试图让人们相信 Python 可以做与 R 相同的事情。为此,我试图复制一个可以做到这一点的 R 脚本
data <- read.table(paste(INPUTDIR,config[i,]$TOEXTRACT,sep=""), HASHEADER, DELIMITER,skip=2,fill=TRUE)
R 不仅能够很好地读取上面的文件,它甚至在 for 循环中读取其中的几个文件(然后对数据进行一些处理)。如果 Python 对这种大小的文件有问题,我可能会打一场失败的战斗..。