Я пытаюсь сделать что-то довольно простое, читая большой файл csv в фреймворк pandas.
data = pandas.read_csv(filepath, header = 0, sep = DELIMITER,skiprows = 2)
Код либо не работает с a MemoryError
, либо никогда не завершается.
Использование памяти в диспетчере задач остановилось на 506 МБ, и после 5 минут отсутствия изменений и отсутствия активности процессора в процессе я остановил его.
Я использую pandas версии 0.11.0.
Я знаю, что раньше была проблема с памятью с анализатором файлов, но, согласно http://wesmckinney.com/blog/?p=543, это должно было быть исправлено.
Размер файла, который я пытаюсь прочитать, составляет 366 МБ, приведенный выше код работает, если я сокращу файл до чего-то короткого (25 МБ).
Также бывало, что я получаю всплывающее сообщение о том, что он не может писать по адресу 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 действительно есть проблема с файлами такого размера, я могу проиграть битву ...