Pandas, Dask và Datatable – Package nào hiệu quả và hữu ích hơn?

Tram Ho

Khi nhắc đến xử lý dữ liệu bảng thì đa số chúng ta sẽ lựa chọn Pandas để đọc và thao tác với dữ liệu, và mình cũng không ngoại lệ. Tuy nhiên, mình vừa đọc được một bài viết khá là hay để xem xem liệu rằng Pandas có phải là lựa chọn tốt nhất không? Ở bài viết này chúng ta sẽ cùng so sánh hiệu suất của các package: Pandas, Dask, Datatable.

Pandas

Pandas là một thư viện của Python được mọi người sử dụng rất nhiều, đặc biệt khi dùng để thao tác với các dạng dữ liệu bảng biểu, vừa nhanh chóng, đơn giản và cũng dễ dùng. Tuy nhiên nếu sử dụng file csv lớn thì sẽ rất tốn rất nhiều thời gian. Ở bài viết này mình sẽ không đề cập đến Pandas nhiều vì Pandas quá phổ biến và hữu ích.

Dask

Dask được sinh ra dùng để đọc file csv lớn – một vấn đề mà pandas gặp phải. Dask là một thư viện mã nguồn mở cung cấp tính năng song song linh hoạt, nâng cao cho tính toán phân tích. Nó nguyên bản chia tỷ lệ các package phân tích này thành các máy đa lõi và các cụm phân tán bất cứ khi nào cần. Khung dữ liệu của dask sử dụng API của Pandas, giúp mọi thứ trở nên cực kỳ dễ dàng đối với những người sử dụng và yêu thích Pandas.

Datatable

Datatable là một thư viện khác của Python tập trung vào cải thiện hiệu suất, mong muốn xử lý dữ liệu lớn (100GB)
với tốc độ tối đa ở trên 1 máy,. Trong khi đó, khả năng tưởng tác của Datatable và Pandas/Numpy cung cấp khả năng chuyển đổi tới một framework xử lý data khác một cách dễ dàng.

So Sánh

Ok. Bây giờ chúng ta cùng nhau thử dùng code để so sánh tốc độ xử lý của 3 thư viện này trực quan hơn nhé.

Đọc file csv

Kiểm tra thời gian đọc của pandas, dask và datatable

Pandas

dask

datatable

Kết quả

Hình ảnh: thời gian chạy

show biểu đồ lên nhìn cho rõ nào.

Hình ảnh: biểu đồ

Như ở 2 hình trên chúng ta có thể dễ dàng thấy được rằng thời gian đọc file của Dask nhanh hơn hẳn so với Pandas và Datatable. Datatable nhanh hơn Pandas 1 ít thời gian.

Đọc nhiều file cùng một lúc

Vì quá lười thêm nhiều file nên mình đọc luôn 4 file ở trên cùng 1 lúc =)))

pandas

dask

datatable

Kết quả

Hình ảnh: thời gian chạy nhiều file

Plot lên cho trực quan hơn nè.


Hình: Biểu đồ

Nhìn vào 2 hình trên thì Dask vẫn nhanh nhất (như mình có nói ở trên đối với dữ liệu csv lớn thì Dask rất hiệu quả) , tuy nhiên khi chạy nhiều file thì Pandas lại đọc nhanh hơn datatable.

Kết luận

Như mình có đề cập ở trên thư viện Dask rất tiện với file csv lớn mà thư viện Pandas khó xử lý, tuy nhiên mình lại không có dữ liệu lớn như vậy để đọc ở đây. Nếu dữ liệu csv hay excel lớn quá mà bạn không thể đọc được thì nghĩ ngay tới Dask nhé. Đối với Datatable thì khi bạn có dữ liệu khoảng 100GB thì dùng sẽ hiệu qủa hơn ạ.

Nếu làm việc với dữ liệu bình thường hoặc để phục vụ nghiên cứu hay học tập thì Pandas vẫn là lựa chọn tốt nhất, hữu ích nhất và lý tưởng nhất và quan trọng là cực kì dễ dùng cũng như có nhiều nguồn để tham khảo. Bởi vì lượng người dùng của Pandas rất nhiều.

Cuối cùng mình xin cảm ơn các bạn đã đọc hết bài viết của mình. Chúc các có bạn một kì nghỉ lễ VUI Vẻ ạ. Upvote cho mình nha.

Reference

[1] https://towardsdatascience.com/pandas-vs-dask-vs-datatable-a-performance-comparison-for-processing-csv-files-3b0e0e98215e

[2] https://mungingdata.com/pandas/read-multiple-csv-pandas-dataframe/

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo