- vừa được xem lúc

Polars & Jupyter Notebook - Sự kết hợp đáng quan tâm

0 0 2

Người đăng: RustDEV VietNam

Theo Viblo Asia

Phần lớn các bạn làm việc, học tập hoặc đang nghiên cứu lĩnh việc khoa học dữ liệu đều có lẽ đã rất quen thuộc với việc sử dụng pandas với Jupyter Notebook. Bài viết này sẽ giới thiệu với các bạn một sự kết hợp mới mẻ và rất triển vọng dành cho công việc phân tích, mô hình hóa dữ liệu, đó là dùng polars (đôi khi còn được gọi là pola-rs) với Jupyter Notebook. Công việc cũ, cách làm mới trên một “modern stack”.

Nếu bạn chưa cài đặt và cấu hình Rust Kernel cho Jupyter Notebook bao giờ, hãy xem video “#0032 - Rust Notebook - Cài đặt Jupyter Notebook cho Rust” trên kênh Youtube RustDEV Vietnam.

Hiệu suất cao kết hợp với khả năng tương tác dữ liệu quen thuộc

Rõ ràng rằng khả năng tương tác xử lý và điều chỉnh trên các “dataframe” trong công tác phân tích dữ liệu là rất cần thiết, nó khác hẳn với việc khi chúng ta dùng IDE để xây dựng các phần mềm, giải pháp phân tích dữ liệu nơi mà chúng ta luôn phải chạy cả chương trình để kiểm chứng một ý tưởng. Do vậy, khi polars (triển khai thêm mô-đun EvCxR) thành đôi với Jupyter Notebook thì dường như những khả năng và đặck tính tốt nhất của cả hai tạo thành một gói giải pháp không thể bỏ qua đối với những ai quan tâm đến tốc độ, năng lực xử lý mạnh mẽ và khả năng tương tác trong phân tích dữ liệu.

  • Tốc độ & Năng lực xử lý: polars là một thư viện chuyên xử lý DataFrame được viết bằng Rust và tất nhiên được thiết kế ngay từ đầu với tiêu chí “performance”. Nó kế thừa triệt để khả năng “multi-threaded” của Rust với khả năng xử lý song song (”parallelism”) mạnh mẽ, lưu ý đây là xử lý song song thực sự chứ không phải bị giới hạn bởi bản chất ngôn ngữ như với Python. polars sử dụng và triển khai kiến trúc bộ nhớ Apache Arrow trong việc xử lý các DataFrame và còn cho phép sử dụng GPU để có tốc độ tính toán tối đa. Bên cạnh đó cơ chế “lazy API” cũng là một điểm đặc biệt của polars khi nó cho phép tối ưu các truy vấn dữ liệu và nâng cao hiệu suất tính toán.
  • Tương tác với dữ liệu: Jupyter Notebooks được trang bị Rust Kernel (evcxr) sẽ cho phép chúng ta viết mã lệnh Rust tương tác với dữ liệu, từng “cell” từng “cell” một hoặc thậm chí có thể chọn “cell” để thực thi ý tưởng hay đơn giản chỉ là một thay đổi trình tự có tính thử nhanh để phân tích dữ liệu. Chúng ta hàon toàn có thể thực hiện “transforming” dữ liệu, trực quan hóa các DataFrame từng bước một hay tiếng tây quen nói là “incrementally”. Việc này rất quan trọng để có một vòng phản hồi nhanh chóng về ý tưởng, thuật toán trong việc phân tích và mô hình hóa dữ liệu cũng như thực hiện kiểm tra nhanh chóng các giả thiết hoặc tinh chỉnh dữ liệu.

Từ “Prototype” đến “Production” một cách tự tin

Sự kết hợp polars và Jupyter Notebook cho phép có một giải pháp liền mạch từ khâu phân tích, mô phỏng hay Prototype đến khâu phát triển và triển khai vào Production.

  • An toàn bộ nhớ & Độ tin cậy cao: Ngôn ngữ Rust và trình biên dịch của nó nổi tiếng trong việc đảm bảo một khi chương trình đã biên dịch thành công thì sẽ chắc chắn không còn các lỗi liên quan đến bộ nhớ hoặc hoạt động đa luồng. Điều này giúp loại bỏ hoàn toàn các lỗi bộ nhớ mà các ngôn ngữ khác hay gặp phải đặc biệt khi làm việc với lượng dữ liệu lớn hoặc có quá nhiều các thao tác xử lý dữ liệu đồng thời, liên tục trong thời gian dài. Một đặc điểm dễ thấy của môi trường Production.
  • Liền mạch ngôn ngữ: bằng việc sử dụng polars trong cả công việc khám phá, mô phỏng, làm mẫu và trong cả môi trường Production, chúng ta sẽ giải quyết được "two-language problem" vốn dĩ có thể phải đối mặt khi dùng Python để khám phá trên Jupyter Notebook nhưng triển khai vào Prođuction lại cần dùng đến một ngôn ngữ phù hợp hơn như Java, C++ hay Rust. Cùng một mã nguồn hiệu suất cao, an toàn được phát triển tương tác trong sổ tay tương tác có thể được sử dụng lại ngay chỉ với một chút thay đổi để thành một ứng dụng dùng cho môi trường Production với rất ít trở ngại. Quy trình làm việc thống nhất này hợp lý hóa toàn bộ chuỗi phát triển giải pháp, giảm độ phức tạp và đảm bảo tính nhất quán từ đầu đến cuối.

polars còn nhiều khả năng nữa nhưng có lẽ sẽ tốt hơn nếu chúng ta tự mình trải nghiệm từng bước từng bước một qua các video hướng dẫn, trên các ví dụ thực tế kèm diễn giải. Hãy bắt đầu với video đầu tiên trong chuỗi video về polars trên kênh Youtube RustDEV Vietnam: “#0035 - Phân tích dữ liệu với polars (Phần 01)”

Bình luận

Bài viết tương tự

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 3)

Tiếp tục phần 2 của series Pandas DataFrame nào. Let's go!!. Ở phần trước, các bạn đã biết được cách lấy dữ liệu một row hoặc column trong Pandas DataFame rồi phải không nào. 6 Hoc.

1 1 153

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 2)

Nào, chúng ta cùng đến với phần 2 của series Pandas DataFrame. Truy xuất Labels và Data. Bạn đã biết cách khởi tạo 1 DataFrame của mình, và giờ bạn có thể truy xuất thông tin từ đó. Với Pandas, bạn có thể thực hiện các thao tác sau:.

0 0 181

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 1)

Pandas DataFrame là một cấu trúc chứa dữ liệu hai chiều và các nhãn tương ứng của nó. DataFrames được sử dụng rộng rãi trong data science, machine learning, scientific computing và nhiều lĩnh vực sử dụng nhiều dữ liệu khác.

0 0 37

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 7)

Làm việc với Time Series trong Pandas. Pandas thật sự vượt trội trong việc xử lý với Time Series.

0 0 43

- vừa được xem lúc

Polars - thư viện xử lý dữ liệu DataFrame nhanh hơn cả Pandas!!!!

Hello mọi người, hẳn là mọi người vẫn hay dùng Pandas để xử lý dữ liệu dạng DataFrame đúng không nhỉ? Hôm nay mình sẽ giới thiệu một thư viện mới Polars - một thư viện xử lý dữ liệu dạng bảng biểu đượ

0 0 28

- vừa được xem lúc

Tổng hợp dữ liệu trong DataFrame

Mở đầu. Khi làm việc với dữ liệu trong DataFrame, một trong những nhiệm vụ quan trọng là tổng hợp và tóm tắt dữ liệu .

0 0 26