Những gì trong một CSV và những gì trong một khung dữ liệu là hai điều rất khác nhau. Ví dụ:9.9
và 9.99999999999999
trong CSV sẽ chiếm cùng một lượng không gian trong khung dữ liệu.
Điều đó nói rằng, dữ liệu trong khung dữ liệu chiếm ít dung lượng hơn nhiều so với dữ liệu trong danh sách. Việc xây dựng một danh sách rất tốn kém về bộ nhớ; và việc thêm vào khung dữ liệu yêu cầu gấu trúc phải tạo khung dữ liệu mới (lớn hơn), sao chép mọi thứ, sau đó để khung dữ liệu ban đầu được thu thập.
Bạn có thể sẽ làm tốt hơn nhiều nếu bạn phân bổ trước một khung dữ liệu gồm 60000 hàng (hoặc tuy nhiên, bạn có tổng cộng bao nhiêu hàng); ví dụ:
data = pd.DataFrame(np.empty((60000,), dtype=[
('x', np.uint8),
('y', np.float64)
]))
và sau đó cho từng hàng được chèn dữ liệu cho hàng đó mà không cần dựa vào dataset
danh sách:
data.values[count,:] = rowdata_at_count
Điều này không an toàn về kiểu chữ, nhưng nó diễn ra khá nhanh (vì không có phân bổ nào đang diễn ra), vì vậy hãy đảm bảo rowdata_at_count
là danh sách có các phần tử tương ứng với các loại cột.
CHỈNH SỬA
Vâng, tôi tin rằng việc nối thêm 100 dòng giống như 100 đoạn nối của một dòng (vì mỗi phần nối thêm phải phân bổ lại và sao chép bảng, giống như đoạn nối). Phân bổ trước tránh được cả nối thêm và nối:kích thước bảng không thay đổi, không cần phân bổ lại và sao chép.