2013-06-07 24 views
7

Tôi đoán câu hỏi này cần một số thông tin chi tiết về việc triển khai concat.là Pandas concat một chức năng tại chỗ?

Giả sử, tôi có 30 tệp, mỗi tệp 1G và tôi chỉ có thể sử dụng tối đa 32 bộ nhớ G. Tôi đã tải các tệp vào danh sách các DataFrames, được gọi là 'list_of_pieces'. List_of_pieces này phải có kích thước ~ 30G, phải không?

nếu tôi thực hiện 'pd.concat (list_of_pieces)', concat có phân bổ 30G khác (hoặc có thể 10G 15G) trong heap và thực hiện một số thao tác hay không.

có ai biết điều này không?

Cảm ơn!

+1

Tôi không * nghĩ * nó ở chỗ ... như một sang một bên, tôi không nghĩ bạn thực sự muốn đọc nhiều vào bộ nhớ (bạn sẽ không để lại nhiều chỗ để thực sự tính toán)! Tôi nghĩ [cửa hàng HDF5] (http://pandas.pydata.org/pandas-docs/stable/io.html#hdf5-pytables) là lựa chọn tốt hơn cho bạn. –

+0

@AndyHayden, tôi sợ tôi cần kích thước dữ liệu đó trong bộ nhớ, tôi cần một số phân tích tương tác trên chúng :-( –

Trả lời

7

Câu trả lời là không, đây không phải là một hoạt động tại chỗ; np.concatenate được sử dụng dưới mui xe, xem tại đây: Concatenate Numpy arrays without copying

Một cách tiếp cận tốt hơn cho vấn đề là viết từng miếng để một bảng HDFStore, xem tại đây: http://pandas.pydata.org/pandas-docs/dev/io.html#hdf5-pytables cho tài liệu, và ở đây: http://pandas.pydata.org/pandas-docs/dev/cookbook.html#hdfstore đối với một số recipies.

Sau đó, bạn có thể chọn bất cứ phần (hoặc thậm chí toàn bộ) khi cần thiết (bằng cách truy vấn hoặc thậm chí hàng số)

Một số loại hoạt động thậm chí có thể được thực hiện khi các dữ liệu trên đĩa: https://github.com/pydata/pandas/issues/3202?source=cc, và ở đây: http://pytables.github.io/usersguide/libref/expr_class.html#

Các vấn đề liên quan