1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo môn học kỹ THUẬT lập TRÌNH tên đề tài thư viện polars

26 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thư viện Polars
Tác giả Nguyễn Quỳnh Anh, Nguyễn Thị Hương Giang, Lê Minh Nguyên, Lê Hoàng Yến
Người hướng dẫn Trương Hài Phan Trần Duy Thanh
Trường học Trường Đại Học Kinh Tế - Luật, Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Chuyên ngành Kỹ Thuật Lập Trình
Thể loại Báo cáo môn học
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 26
Dung lượng 622,18 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Báo cáo bao gồm các nội dung chính nhưgiới thiệu, phân tích các tính năng cơ bản của thư viện cũng như một vài cấu trúc hàm xử lý dữ liệu cơ bản của Polars.. Polars và các thư viện tương

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC KINH TẾ - LUẬT

BÁO CÁO Môn học: KỸ THUẬT LẬP TRÌNH Tên đề tài: Thư viện Polars

Giảng viên hướng dẫn: TRƯƠNG HOÀI PHAN

Thành phố Hồ Chí Minh, ngày 19 tháng 04 năm 2023

Trang 3

LỜI MỞ ĐẦU

Trong cuộc sống hiện đại, dữ liệu đã trở thành một yếu tố quan trọng và không thể thiếu trong nhiều lĩnh vực khác nhau,từ kinh doanh đến y tế, giáo dục và nghiên cứu khoa học Từ các doanh nghiệp đến các cơ quan chính phủ và các tổ chức phi chính phủ, tất cả đều sử dụng dữ liệu để đưa ra quyết định và định hướng cho hoạt động của mình

Trong kinh doanh, dữ liệu giúp các doanh nghiệp hiểu rõ hơn về khách hàng của

họ, định hướng cho các chiến lược tiếp thị và tìm ra các cơ hội kinh doanh mới Trong y

tế, dữ liệu giúp các chuyên gia y tế nghiên cứu các bệnh lý và tìm ra các xu hướng mớitrong các bệnh tật Trong giáo dục, dữ liệu giúp đưa ra quyết định về việc đầu tư vào cáckhoản chi phí và cải thiện chất lượng giáo dục

Nhưng để đem lại các hiệu quả trên, dữ liệu thu thập được cần phải được lọc, phântích và liên kết một cách chính xác, rõ ràng Và thư viện Polars trong Python là một lựachọn tuyệt vời để thực hiện việc này

Trong báo cáo này, chúng ta sẽ tìm hiểu sâu hơn về thư viện Polars và các tínhnăng mạnh mẽ của nó trong phân tích dữ liệu Báo cáo bao gồm các nội dung chính nhưgiới thiệu, phân tích các tính năng cơ bản của thư viện cũng như một vài cấu trúc hàm xử

lý dữ liệu cơ bản của Polars

Qua bài báo cáo này, chúng ta sẽ hiểu rõ hơn về cách sử dụng Polars để thực hiệncông việc phân tích dữ liệu một cách dễ dàng và hiệu quả, từ đó đưa ra các quyết định vàđịnh hướng tốt nhất từ những dữ liệu mình có

Trang 4

MỤC LỤC

I Giới thiệu chung 4

1 Giới thiệu về Polars 4

2 Polars và các thư viện tương tự 4

2.1 Pandas 5

2.2 Dask 6

2.3 Spark 6

3 Cài đặt và sử dụng 7

II Cấu trúc dữ liệu trong Polars: 7

1 Series 7

1.1 Khái niệm 7

1.2 Thao tác 7

1.2.1 Khởi tạo 7

1.2.2 Truy xuất 9

1.2.3 Sắp xếp 12

1.2.4 Tính toán số học 13

2 DataFrame 13

2.1 Khái niệm 13

2.2 Thao tác 14

2.2.1 Khởi tạo 14

2.2.2 Truy xuất dữ liệu: 15

2.2.3 Sắp xếp dữ liệu:.sort() 19

2.2.4 Nhóm dữ liệu: groupby() 19

2.2.5 Lưu/Xuất dữ liệu 20

III Lazy API 20

1 Sử dụng lazy API 21

1.1 Từ File 21

1.2 Từ DataFrame 21

2 Lấy thông tin dữ liệu trong lazy API 21

2.1 Nhập kiểm tra trong lazy API 22

2.2 Xử lý với các thao tác không có sẵn trên lazy API 22

3 Thực hiện truy vấn 23

IV Kết luận 24

TÀI LIỆU THAM KHẢO 25

Trang 5

I Giới thiệu chung

1 Giới thiệu về Polars

Polars là một thư viện xử lý dữ liệu mã nguồn mở được viết bằng ngôn ngữ một ngôn ngữ lập trình được tối ưu cho hiệu suất cao Điều này giúp cho Polars có thể xử

Rust-lý các tập dữ liệu lớn với tốc độ nhanh và tiêu thụ ít tài nguyên hơn so với các thư việnkhác Ngoài Rust, Polars cũng hỗ trợ nhiều ngôn ngữ lập trình khác như Python vàNodeJS

Polars được xây dựng trên nền tảng Arrow2, một phiên bản an toàn và hiệu quảcủa Apache Arrow, cho phép sử dụng tài nguyên và xử lý dữ liệu một cách hiệu quả Vìthế, Polars có thể tích hợp hoàn hảo với các công cụ khác trong hệ sinh thái Arrow

Polars chính thức ra mắt vào tháng 3 năm 2020 và được phát triển bởi Xomnia công ty Data & AI hàng đầu tại Hà Lan

-2 Polars và các thư viện tương tự

Polars là thư viện giúp tính toán và phân tích dữ liệu, thực hiện các thao tác với dữ liệutrong khoa học dữ liệu Polars trở nên chiếm ưu thế nhờ vào tốc độ, tính hiệu quả của bộnhớ và việc sử dụng được đơn giản hóa Sau đây là một vài ưu thế của Polars:

 Tốc độ: Polars được thiết kế có tốc độ nhanh kể cả khi phải xử lý với những dữliệu lớn có dung lượng lên đến 50 GB vì nó được xây dựng với tính năng hiệu quảcủa bộ nhớ

Trang 6

Hình 1.So sánh thời gian đọc giữa Pandas và Polars

 Dễ sử dụng: API trong Polars có tính trực quan, dễ hiểu và đơn giản Ngoài ra nó cũng tương thích với thư viện Pandas, giúp dễ dàng để chuyển đổi giữa hai thư viện

 Sự linh hoạt: Thư viện Polars hỗ trợ nhiều định dạng dữ liệu như: CSV, Excel, Parquet, Arrow, và các kiểu dữ liệu như: số thực, số nguyên, chuỗi,…

 Hiệu quả bộ nhớ: Polars được thiết kế để sử dụng bộ nhớ tối thiểu điều này cho phép Polars xử lý các tệp dữ liệu lớn mà không bị hết bộ nhớ

 Ngoài ra trong Polars còn hỗ trợ cả eager và lazy execution giúp nó phù hợp để thực thi trên môi trường phân tán cũng như tối ưu hóa và tăng tốc độ các truy vấn

2.1 Pandas

Pandas là một thư viện Python cần thiết cho khoa học dữ liệu Nhưng nhược điểm lớn nhất của nó là có thể hoạt động chậm trên các tập dữ liệu lớn Polars là giải pháp thaythế Pandas được thiết kế để xử lý dữ liệu nhanh hơn Polars là một thư viện có phần tương tự với Pandas nhưng ưu điểm của nó là nhanh hơn rất nhiều so với Pandas khi thựchiện các thao tác khác nhau với Dataframe

Polars có hai API khác nhau: eager API và lazy API Việc thực hiện eager APItương tự như Pandas nghĩa là đoạn code sẽ chạy trực tiếp và kết quả của nó được trả vềngay lập tức Nhưng đối với lazy API thì nó sẽ không chạy được cho đến khi cần kết quảbởi vì nó tránh chạy code không cần thiết nên đôi khi việc thực thi lazy API sẽ hiệu quảhơn eager API

Trang 7

Phải dùng bổ sung đến thư viện Dask để hỗ trợ những hoạt động song song do có một số hoạt động đaluồng nhưng thư viện lại là đơn luồng

Kiểm tra Polars có “lazy evaluation” và

“eager evaluation”

 “ azy evaluation” mạnh vì thực hiện tối ưu hóa truy vấn, tăng tốc độ truy vấn và giảm bộ nhớ

Pandas chỉ có “eager evaluation”

 đoạn code được kiểm tra ngaysau khi chạy code

Dữ liệu bị

mất Dữ liệu bị thiếu tương ứng với giá trị null cho tất cả các loại dữ liệu

1. việc xử lý dữ liệu bị thiếu trở nên đơn giản và nhất quán trên tất cả các loại dữ liệu

Tùy thuộc vào kiểu dữ liệu của cột các giá trị bị thiếu được biểu thị là giá trị NaN hoặc None

 hầu hết các phân tích đều có thêm kiểm tra null, làm ảnh hưởng đến hiệu suất

2.2 Dask

Dask là một thư viện tính toán song song phổ biến và cung cấp khả năng xử lý dữ liệu mở rộng Dask được thiết kế để hoạt động với các tập dữ liệu rất lớn để vừa với bộ nhớ Dask cũng cung cấp nhiều chức năng để thao tác dữ liệu, bao gồm lọc, nhóm, tổng hợp Tuy nhiên, Dask có thể khó sử dụng hơn các thư viện khác và nó có thể yêu cầu các

kỹ năng lập trình nâng cao hơn thì mới có thể tận dụng hết khả năng của nó

2.3 Spark

Trang 8

Apache Spark là một framework tính toán phân tán phổ biến cung cấp khả năng xử

lý dữ liệu mạnh mẽ Nó được thiết kế để hoạt động với các tập dữ liệu lớn được phân phối trên nhiều máy Spark cung cấp nhiều chức năng để thao tác với nhiều dữ liệu, bao gồm lọc, nhóm và tổng hợp Tuy nhiên, Spark có thể phức tạp hơn để thiết lập và sử dụng

so với các thư viện khác và có thể yêu cầu kiến thức chuyên môn để tận dụng tối đa khả năng của nó

Tóm lại, Polars là một thư viện thao tác dữ liệu mạnh mẽ cung cấp khả năng xử lý

dữ liệu nhanh và tiết kiệm bộ nhớ Nó cung cấp nhiều chức năng để làm sạch, lọc, nhóm

và tổng hợp dữ liệu, khiến nó trở thành lựa chọn phổ biến của các nhà khoa học và nhà phân tích dữ liệu Mặc dù có sẵn các thư viện khác cung cấp chức năng tương tự, nhưng Polars nổi bật nhờ hiệu suất nhanh và hỗ trợ mạnh mẽ cho quá trình xử lý song song

3 Cài đặt và sử dụng

Cài đặt với pip: pip install polars

Cài đặt với conda: conda install polars

Nó là một cột của DataFrame và được xem như là một cấu trúc dữ liệu gồm haimảng, trong đó một mảng lưu trữ các chỉ mục (index) và một mảng lưu trữ các giá trịtương ứng

Hình 2 Series

1.2 Thao tác

1.1.

Trang 9

1.2.1 Khởi tạo

Kết quả:

Lưu ý: dtype mặc định của Polars là Int64

 Tạo series từ dict

Kết quả:

 Tạo series từ series trong pandas

Trang 14

Với các tính năng, thao tác linh hoạt, DataFrame là một trong những cấu trúc dữliệu quan trọng trong phân tích dữ liệu và khoa học dữ liệu.

Trang 15

Hình 3 DataFrame là tập hợp của nhiều series

Trang 16

 Đọc dữ liệu từ file CSV thành DataFrame: .read_csv()

Kết quả:

Ngoài CSV, Polars có thể tạo DataFrame từ nhiều file có định dạng khác bao gồm Excel, Arrow, ORC, Avro,…

2.2.2.Truy xuất dữ liệu:

Trước tiên tạo một DataFrame đơn giản dùng để làm dữ liệu cho các thao tác phía dưới

Trang 17

Kết quả:

 Truy xuất dữ liệu theo dòng: .filter()

Hàm này nhận vào một biểu thức điều kiện và trả về một DataFrame mớichỉ chứa các dòng thỏa điều kiện đó

Kết quả:

Chúng ta có thể đưa ra nhiều điều kiện bằng toán tử &

Trang 18

Kết quả:

Truy xuất dữ liệu theo cột: .select()

Dữ liệu có thể được truy xuất theo:

Trang 19

Kết quả:

 Dtype của các cột

Kết quả:

Truy xuất dữ liệu theo dòng và cột

Chúng ta có thể kết hợp hai hàmphương filter() và select() để chọn cảhàng và cột

Trang 20

 reverse: Giá trị boolean quyết định việc sắp xếp theo chiều giảm dần haytăng dần Mặc định là False.

Kết quả:

Trang 22

Ngoài CSV, Polars còn có thể xuất file ra nhiều định dạng khác bao gồm JSON, Feather/ IPC, Parquet, Excel,… với cú pháp tương tự.

III Lazy API

Lazy API là chìa khóa để Polars trở thành một thư viện phân tích dữ liệu mạnh mẽ,tuy không có tính toán phân tán, nhưng các truy vấn sẽ được tối ưu hóa để thực hiện ít công việc hơn Lazy API cho phép người dùng tối ưu hóa truy vấn trước khi chạy và đặc biệt với các bộ dữ liệu lớn việc sử dụng lazy API trở nên vô cùng hiệu quả

Trang 23

2 Lấy thông tin dữ liệu trong lazy API

Hàm này trả về một đối tượng Schema, chứa thông tin về các cột của DataFrame,bao gồm tên, kiểu dữ liệu và giá trị mặc định (nếu có)

Kết quả:

2.1 Nhập kiểm tra trong lazy API

Một ưu điểm của lazy API là Polars sẽ kiểm tra việc lấy thông tin trước khi bất kỳ

dữ liệu nào được xử lý Kiểm tra này xảy ra khi bạn thực hiện “ lazy” truy vấn

Hàm round() được thực hiện ở cột số nguyên có tên là “bar”

Kết quả:

Hàm round() chỉ hợp lệ cho các cột có dtype là float64 Gọi round() ở cột sốnguyên có nghĩa là thao tác sẽ gây ra lỗi SchemaError Nếu mà thực hiện truy vấn này ởchế độ “eager”, lỗi sẽ chỉ được tìm thấy khi dữ liệu đã được xử lý trong tất cả các bướctrước đó

Ngược lại khi thực hiện với chế độ “lazy”, Polars sẽ kiểm tra bất kỳ lỗiSchemaError nào trước bước tốn nhiều thời gian để xử lý dữ liệu trong quy trình

2.2 Xử lý với các thao tác không có sẵn trên lazy API

Khi quy trình có một hoạt động không có sẵn trong lazy API thì thực hiện như sau:

 Tạo một DataFrame đơn giản

 Chuyển đổi DataFrame thành Lazy Frame với lazy()

 Sử dụng with_columns()

 Thực hiện truy vấn collect() để được DataFrame

 Sử dụng pivot() trên DataFrame

 Chuyển đổi trở lại chế độ “lazy”

 Sử dụng filter()

 Kết thúc truy vấn với collect() để được một DataFrame

Trang 24

Kết quả:

3 Thực hiện truy vấn

Dữ liệu mẫu ban đầu từ file CSV:

Để thực hiện truy vấn trên tập dữ liệu đầy đủ bằng cách gọi hàm collect() trêntruy vấn

Trang 25

Kết quả:

Với hàm collect() mặc định, Polars xử lý tất cả dữ liệu thành một đợt Điều này cónghĩa là tất cả dữ liệu phải vừa với bộ nhớ khả dụng tại điểm sử dụng bộ nhớ cao nhấttrong truy vấn

IV Kết luận

Trong bài báo cáo này, chúng ta đã được tìm hiểu về thư viện Polars trong Python,một công cụ hữu ích giúp xử lý dữ liệu một cách nhanh chóng và hiệu quả Chúng ta đã

đi sâu vào các tính năng cơ bản của thư viện và tìm hiểu cách sử dụng chúng qua các ví

dụ cụ thể để thực hiện các thao tác phân tích dữ liệu phổ biến

Như vậy, chúng ta có thể thấy rằng Polars là một công cụ mạnh mẽ để xử lý dữ liệu trong Python, với khả năng hỗ trợ các tính năng phức tạp như phân tích đa luồng, xử

lý dữ liệu theo cột và hàng, trộn dữ liệu từ nhiều nguồn khác nhau, và nhiều hơn nữa

Với sự tiện lợi và hiệu quả của Polars, chúng ta có thể dễ dàng và nhanh chóng phân tích dữ liệu một cách đáng tin cậy, giúp giải quyết các vấn đề phức tạp trong các dự

án dữ liệu của chúng ta Từ đó, Polars đóng góp đáng kể vào quá trình phát triển và nghiên cứu khoa học dữ liệu

Trang 26

TÀI LIỆU THAM KHẢO

Hiếu, N V (2023, March 11) Polars - Xử lý dữ liệu dạng bảng nhanh hơn với Polars

Blog.luyencode.net https://blog.luyencode.net/xu-ly-du-lieu-dang-bang-voi-polars/

Introduction - Polars - User Guide (n.d.) Pola-Rs.github.io Retrieved April 24, 2023, from

https://pola-rs.github.io/polars-book/user-guide/

Lee, W.-M (2022, July 15) Understanding Lazy Evaluation in Polars - Towards Data Science

Medium; Towards Data Science evaluation-in-polars-b85ccb864d0c

https://towardsdatascience.com/understanding-lazy-McKinney, W (2017, September 21) Apache Arrow and the “10 Things I Hate About pandas”

- Wes McKinney Wesmckinney.com

https://wesmckinney.com/blog/apache-arrow-pandas-internals/

Monigatti, L (2023, January 19) Pandas vs Polars: A Syntax and Speed Comparison Medium

https://towardsdatascience.com/pandas-vs-polars-a-syntax-and-speed-comparison-5aa54e27497e

panData (2023, March 3) Discover the Power of Polars Library for Fast and Efficient Data

Manipulation in Python Medium

Ngày đăng: 05/05/2023, 06:15

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w