Я пытаюсь сделать что-то довольно простое, читая большой файл csv в фреймворк pandas.
data = pandas.read_csv(filepath, header = 0, sep = DELIMITER,skiprows = 2)
Код либо терпит неудачу с MemoryError
, либо просто не заканчивается.
Использование Mem в диспетчере задач остановилось на 506 Мбайт, и после 5 минут без изменений и активности процессора в этом процессе я его остановил.
Я использую pandas версию 0.11.0.
Мне известно, что с файловым парсером была проблема с памятью, но в соответствии с http://wesmckinney.com/blog/?p=543 это должно было быть исправлена.
Файл, который я пытаюсь прочитать, составляет 366 Мб, код выше работает, если я вырезал файл до чего-то короткого (25 Мб).
Также случилось, что я получаю всплывающее сообщение о том, что он не может написать адрес 0x1e0baf93...
StackTrace:
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 script, который делает
data <- read.table(paste(INPUTDIR,config[i,]$TOEXTRACT,sep=""), HASHEADER, DELIMITER,skip=2,fill=TRUE)
R не только умеет читать этот файл просто отлично, он даже считывает несколько из этих файлов в цикле for (а затем делает некоторые вещи с данными). Если у Python есть проблема с файлами такого размера, я могу бороться с проигранным сражением...