Tôi đang cố gắng làm một việc khá đơn giản, đọc một tệp csv lớn vào khung dữ liệu gấu trúc.
data = pandas.read_csv(filepath, header = 0, sep = DELIMITER,skiprows = 2)
Mã không thành công với một MemoryError
hoặc không bao giờ kết thúc.
Việc sử dụng bản ghi nhớ trong trình quản lý tác vụ dừng lại ở 506 Mb và sau 5 phút không có thay đổi và không có hoạt động CPU nào trong quá trình này, tôi đã dừng nó.
Tôi đang sử dụng phiên bản gấu trúc 0.11.0.
Tôi biết rằng đã từng có sự cố bộ nhớ với trình phân tích cú pháp tệp, nhưng theo http://wesmckinney.com/blog/?p=543, điều này đã được khắc phục.
Tệp tôi đang cố đọc là 366 Mb, đoạn mã trên sẽ hoạt động nếu tôi cắt tệp xuống ngắn (25 Mb).
Nó cũng đã xảy ra rằng tôi nhận được một cửa sổ bật lên cho tôi biết rằng nó không thể viết thư đến địa chỉ 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 . . .
Một chút thông tin cơ bản - Tôi đang cố gắng thuyết phục mọi người rằng Python có thể làm giống như R. Vì vậy, tôi đang cố gắng sao chép một tập lệnh R làm được
data <- read.table(paste(INPUTDIR,config[i,]$TOEXTRACT,sep=""), HASHEADER, DELIMITER,skip=2,fill=TRUE)
R không chỉ quản lý để đọc tốt các tệp ở trên, nó thậm chí còn đọc một số tệp này trong vòng lặp for (và sau đó thực hiện một số nội dung với dữ liệu). Nếu Python gặp sự cố với các tệp có kích thước như vậy, tôi có thể đang phải chiến đấu một trận thua ...