Một đồng nghiệp và tôi đã thực hiện một số nghiên cứu sơ bộ về sự khác biệt hiệu suất giữa gấu trúc và data.table. Bạn có thể tìm thấy nghiên cứu (được chia thành hai phần) trên Blog của chúng tôi (Bạn có thể tìm thấy phần hai ở đây ).
Chúng tôi đã tìm ra rằng có một số nhiệm vụ trong đó gấu trúc rõ ràng vượt trội so với data.table, nhưng cũng có trường hợp data.table nhanh hơn nhiều. Bạn có thể tự kiểm tra và cho chúng tôi biết bạn nghĩ gì về kết quả.
EDIT:
Nếu bạn không muốn đọc blog chi tiết, đây là một bản tóm tắt ngắn về thiết lập của chúng tôi và những phát hiện của chúng tôi:
Thiết lập
Chúng tôi đã so sánh pandas
và data.table
trên 12 bộ dữ liệu mô phỏng khác nhau về các hoạt động sau (cho đến nay), mà chúng tôi gọi là các kịch bản.
- Truy xuất dữ liệu với thao tác giống như chọn
- Lọc dữ liệu với thao tác chọn có điều kiện
- Thao tác sắp xếp dữ liệu
- Hoạt động tổng hợp dữ liệu
Các tính toán được thực hiện trên một máy có Intel i7 2.2GHz với 4 lõi vật lý, RAM 16 GB và ổ cứng SSD. Các phiên bản phần mềm là OS X 10.13.3, Python 3.6.4 và R 3.4.2. Các phiên bản thư viện tương ứng được sử dụng là 0,22 cho gấu trúc và 1,10,4-3 cho data.table
Kết quả một cách ngắn gọn
data.table
dường như nhanh hơn khi chọn cột ( pandas
trung bình mất thêm 50% thời gian)
pandas
nhanh hơn trong việc lọc các hàng (trung bình khoảng 50%)
data.table
dường như nhanh hơn đáng kể trong việc sắp xếp ( pandas
đôi khi chậm hơn 100 lần)
- thêm một cột mới xuất hiện nhanh hơn với
pandas
- kết quả tổng hợp là hỗn hợp hoàn toàn
Xin lưu ý rằng tôi đã cố gắng đơn giản hóa kết quả càng nhiều càng tốt để không làm bạn chán đến chết. Để hình dung đầy đủ hơn hãy đọc các nghiên cứu. Nếu bạn không thể truy cập trang web của chúng tôi, xin vui lòng gửi cho tôi một tin nhắn và tôi sẽ chuyển tiếp cho bạn nội dung của chúng tôi. Bạn có thể tìm thấy mã cho nghiên cứu hoàn chỉnh trên GitHub . Nếu bạn có ý tưởng làm thế nào để cải thiện việc học của chúng tôi, xin vui lòng gửi email cho chúng tôi. Bạn có thể tìm thấy địa chỉ liên lạc của chúng tôi trên GitHub.