大きなcsvファイルをパンダのデータフレームに読み込むという、かなり単純なことをしようとしています。
data = pandas.read_csv(filepath, header = 0, sep = DELIMITER,skiprows = 2)
コードは で失敗するかMemoryError
、まったく終了しません。
タスクマネージャーのメモリ使用量は506 Mbで停止し、5分間変化がなく、プロセスのCPUアクティビティもなかった後、停止しました。
私はパンダバージョン0.11.0を使用しています。
以前はファイル パーサーにメモリの問題があったことは承知していますが、http://wesmckinney.com/blog/? p=543 によると、これは修正されているはずです。
読み込もうとしているファイルは 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 がそのサイズのファイルに問題がある場合、私は負け戦を戦っているかもしれません...