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

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

Đ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

ĐẠ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 TRẦN DUY THANH Nhóm: Masterchef ST T Họ tên MSSV Đóng góp Nguyễn Quỳnh Anh K224161805 100% Nguyễn Thị Hương Giang K224161810 100% Lê Minh Nguyên K224161829 100% Lê Hồng Yến K224161846 100% Thành phố Hồ Chí Minh, ngày 19 tháng 04 năm 2023 LỜI MỞ ĐẦU Trong sống đại, liệu trở thành yếu tố quan trọng thiếu nhiều lĩnh vực khác nhau, từ kinh doanh đến y tế, giáo dục nghiên cứu khoa học Từ doanh nghiệp đến quan phủ tổ chức phi phủ, tất sử dụng liệu để đưa định định hướng cho hoạt động Trong kinh doanh, liệu giúp doanh nghiệp hiểu rõ khách hàng họ, định hướng cho chiến lược tiếp thị tìm hội kinh doanh Trong y tế, liệu giúp chuyên gia y tế nghiên cứu bệnh lý tìm xu hướng bệnh tật Trong giáo dục, liệu giúp đưa định việc đầu tư vào khoản chi phí cải thiện chất lượng giáo dục Nhưng để đem lại hiệu trên, liệu thu thập cần phải lọc, phân tích liên kết cách xác, rõ ràng Và thư viện Polars Python lựa chọn tuyệt vời để thực việc Trong báo cáo này, tìm hiểu sâu thư viện Polars tính mạnh mẽ phân tích liệu Báo cáo bao gồm nội dung giới thiệu, phân tích tính thư viện vài cấu trúc hàm xử lý liệu Polars Qua báo cáo này, hiểu rõ cách sử dụng Polars để thực cơng việc phân tích liệu cách dễ dàng hiệu quả, từ đưa định định hướng tốt từ liệu có MỤC LỤC I Giới thiệu chung Giới thiệu Polars .4 Polars thư viện tương tự 2.1 Pandas 2.2 Dask .6 2.3 Spark .6 Cài đặt sử dụng .7 II Cấu trúc liệu Polars: Series .7 1.1 Khái niệm 1.2 Thao tác 1.2.1 Khởi tạo .7 1.2.2 Truy xuất 1.2.3 Sắp xếp 12 1.2.4 Tính tốn số học 13 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 liệu: 15 2.2.3 Sắp xếp liệu:.sort() 19 2.2.4 Nhóm liệu: groupby() .19 2.2.5 Lưu/Xuất liệu .20 III Lazy API .20 Sử dụng lazy API 21 1.1 Từ File 21 1.2 Từ DataFrame 21 Lấy thông tin liệu lazy API 21 2.1 Nhập kiểm tra lazy API 22 2.2 Xử lý với thao tác khơng có sẵn lazy API 22 Thực truy vấn 23 IV Kết luận 24 TÀI LIỆU THAM KHẢO .25 I Giới thiệu chung Giới thiệu Polars Polars thư viện xử lý liệu mã nguồn mở viết ngôn ngữ Rustmột ngôn ngữ lập trình tối ưu cho hiệu suất cao Điều giúp cho Polars xử lý tập liệu lớn với tốc độ nhanh tiêu thụ tài nguyên so với thư viện khác Ngồi Rust, Polars hỗ trợ nhiều ngơn ngữ lập trình khác Python NodeJS Polars xây dựng tảng Arrow2, phiên an toàn hiệu Apache Arrow, cho phép sử dụng tài nguyên xử lý liệu cách hiệu Vì thế, Polars tích hợp hồn hảo với công cụ khác hệ sinh thái Arrow Polars thức mắt vào tháng năm 2020 phát triển Xomnia công ty Data & AI hàng đầu Hà Lan Polars thư viện tương tự  Polars thư viện giúp tính tốn phân tích liệu, thực thao tác với liệu khoa học liệu Polars trở nên chiếm ưu nhờ vào tốc độ, tính hiệu nhớ việc sử dụng đơn giản hóa Sau vài ưu Polars:  Tốc độ: Polars thiết kế có tốc độ nhanh kể phải xử lý với liệu lớn có dung lượng lên đến 50 GB xây dựng với tính hiệu nhớ      Hình 1.So sánh thời gian đọc Pandas Polars Dễ sử dụng: API Polars có tính trực quan, dễ hiểu đơn giản Ngồi tương thích với thư viện Pandas, giúp dễ dàng để chuyển đổi hai thư viện Sự linh hoạt: Thư viện Polars hỗ trợ nhiều định dạng liệu như: CSV, Excel, Parquet, Arrow, kiểu liệu như: số thực, số nguyên, chuỗi,… Hiệu nhớ: Polars thiết kế để sử dụng nhớ tối thiểu điều cho phép Polars xử lý tệp liệu lớn mà khơng bị hết nhớ Ngồi Polars hỗ trợ eager lazy execution giúp phù hợp để thực thi mơi trường phân tán tối ưu hóa tăng tốc độ truy vấn 2.1 Pandas  Pandas thư viện Python cần thiết cho khoa học liệu Nhưng nhược điểm lớn hoạt động chậm tập liệu lớn Polars giải pháp thay Pandas thiết kế để xử lý liệu nhanh Polars thư viện có phần tương tự với Pandas ưu điểm nhanh nhiều so với Pandas thực thao tác khác với Dataframe.  Polars có hai API khác nhau: eager API lazy API Việc thực eager API tương tự Pandas nghĩa đoạn code chạy trực tiếp kết trả Nhưng lazy API khơng chạy cần kết tránh chạy code không cần thiết nên việc thực thi lazy API hiệu eager API.  POLARS PANDAS Chỉ mục  Không sử dụng mục (index) hàng lập theo vị trí số nguyên bảng   giúp công việc trở nên đơn giản hơn, rõ ràng xảy lỗi   Mỗi hàng có mục  Biểu thị liệu nhớ  Mảng Apache Arrow  phân tích cột nhớ làm tăng thời gian tải liệu, giảm mức sử dụng nhớ tính tốn nhanh hơn   Mảng Numpy  Hỗ trợ hoạt động song song Sử dụng ngơn ngữ lập trình Rust nên khai thác mạnh việc xử lý đồng thời chạy hoạt động song song  Phải dùng bổ sung đến thư viện Dask để hỗ trợ hoạt động song song có số hoạt động đa luồng thư viện lại đơn luồng  Kiểm tra  Polars có “lazy evaluation” “eager evaluation”   “ azy evaluation” mạnh thực tối ưu hóa truy vấn, tăng tốc độ truy vấn giảm nhớ  Pandas có “eager evaluation”   đoạn code kiểm tra sau chạy code Dữ liệu bị Dữ liệu bị thiếu tương ứng với giá mất  trị null cho tất loại liệu  việc xử lý liệu bị thiếu trở nên đơn giản quán tất loại liệu Tùy thuộc vào kiểu liệu cột giá trị bị thiếu biểu thị giá trị NaN None  hầu hết phân tích có thêm kiểm tra null, làm ảnh hưởng đến hiệu suất 2.2 Dask  Dask thư viện tính tốn song song phổ biến cung cấp khả xử lý liệu mở rộng Dask thiết kế để hoạt động với tập liệu lớn để vừa với nhớ Dask cung cấp nhiều chức để thao tác liệu, bao gồm lọc, nhóm, tổng hợp Tuy nhiên, Dask khó sử dụng thư viện khác yêu cầu kỹ lập trình nâng cao tận dụng hết khả 2.3 Spark  Apache Spark framework tính tốn phân tán phổ biến cung cấp khả xử lý liệu mạnh mẽ Nó thiết kế để hoạt động với tập liệu lớn phân phối nhiều máy Spark cung cấp nhiều chức để thao tác với nhiều liệu, bao gồm lọc, nhóm tổng hợp Tuy nhiên, Spark phức tạp để thiết lập sử dụng so với thư viện khác yêu cầu kiến thức chuyên môn để tận dụng tối đa khả Tóm lại, Polars thư viện thao tác liệu mạnh mẽ cung cấp khả xử lý liệu nhanh tiết kiệm nhớ Nó cung cấp nhiều chức để làm sạch, lọc, nhóm tổng hợp liệu, khiến trở thành lựa chọn phổ biến nhà khoa học nhà phân tích liệu Mặc dù có sẵn thư viện khác cung cấp chức tương tự, Polars bật nhờ hiệu suất nhanh hỗ trợ mạnh mẽ cho trình xử lý song song.  Cài đặt sử dụng Cài đặt với pip: pip install polars Cài đặt với conda: conda install polars Sử dụng: import polars as pl II Cấu trúc liệu Polars: Series 1.1 Khái niệm Series loại đối tượng tương tự mảng chiều diễn tả theo chiều dọc, có khả lưu trữ loại liệu số nguyên, số thập phân, chuỗi hay đối tượng Python Nó cột DataFrame xem cấu trúc liệu gồm hai mảng, mảng lưu trữ mục (index) mảng lưu trữ giá trị tương ứng Hình Series 1.2 Thao tác 1.1 1.2.1 Khởi tạo Kết quả: Lưu ý: dtype mặc định Polars Int64  Tạo series từ dict Kết quả:  Tạo series từ series pandas Kết quả:  Thêm series vào series: append() Kết quả: 1.2.2 Truy xuất  Truy xuất giá trị dựa vào index Kết quả:  Chỉ index phần tử có giá trị lớn nhất/nhỏ nhất: arg_max()/.arg_min() 10 Kết quả:  Giá trị đầu/cuối series: head()/.tail() Kết quả:  Giá trị yếu vị (giá trị xuất nhiều lần nhất): mode() Kết quả:  Cập nhật giá trị theo index 12 Kết quả: 1.2.3 Sắp xếp  Sắp xếp giá trị theo thứ tự: sort() Kết quả:  Sắp xếp index theo thứ tự giá trị tăng dần: arg_sort() 13 Kết quả: 1.2.4 Tính tốn số học Kết quả: DataFrame 2.1 Khái niệm DataFrame cấu trúc liệu kết hợp nhiều series Vì vậy, giống series, DataFrame chứa loại liệu Trong DataFrame, liệu tổ chức hai chiều với cột (là series) hàng Các cột hàng DataFrame có nhãn (label) tương ứng Với tính năng, thao tác linh hoạt, DataFrame cấu trúc liệu quan trọng phân tích liệu khoa học liệu 14 Hình DataFrame tập hợp nhiều series 2.2 Thao tác 2.2.1.Khởi tạo  Tạo DataFrame từ dictionary Kết quả:  Tạo DataFrame từ list data 15 Kết quả: Schema: parameter dùng để thiết lập thông tin cấu trúc, khai báo theo cách sau:  Dưới dạng dict {name:type} danh sách cặp (name, type) Nếu không điền type (None), type mặc định Int64  Dưới dạng danh sách tên cột Trong trường hợp này, type mặc định Int64  Nếu bạn cung cấp danh sách tên cột mà không giống với tên cột liệu sở, tên cột cập nhật theo schema Số lượng tên cột thiết lập schema phải phù hợp với số cột liệu sở  Đọc liệu từ file CSV thành DataFrame: read_csv() Kết quả: Ngồi CSV, Polars 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 liệu: Trước tiên tạo DataFrame đơn giản dùng để làm liệu cho thao tác phía 16 Kết quả:  Truy xuất liệu theo dòng: filter() Hàm nhận vào biểu thức điều kiện trả DataFrame chứa dịng thỏa điều kiện Kết quả: Chúng ta đưa nhiều điều kiện tốn tử & 17 Kết quả:  Truy xuất liệu theo cột: select() Dữ liệu truy xuất theo:  Tên cột  Danh sách tên cột   Các điều kiện tên cột Kết quả: Kết quả: 18 Kết quả:  Dtype cột Kết quả:  Truy xuất liệu theo dòng cột  Chúng ta kết hợp hai hàmphương filter() select() để chọn hàng cột  19 Kết quả: 2.1 2.2 2.2.3 Sắp xếp liệu:.sort() Cú pháp: DataFrame.sort(by_column: Union[str, List[str]], reverse: bool = False) Trong đó:  by_column: Tên cột danh sách tên cột liệu xếp Nếu truyền vào danh sách tên cột việc xếp ưu tiên theo thứ tự tên cột có đầu danh sách  reverse: Giá trị boolean định việc xếp theo chiều giảm dần hay tăng dần Mặc định False Kết quả: 20 2.2.4.Nhóm liệu: groupby() Groupby nhóm hàng theo cột cụ thể Từ đó, ta dễ dàng tính tốn thống kê liệu Kết quả: 2.2.5.Lưu/Xuất liệu Chuyển liệu từ DataFrame thành file CSV: write_csv() Kết quả: 21 Ngoài CSV, Polars cịn xuất file 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 chìa khóa để Polars trở thành thư viện phân tích liệu mạnh mẽ, khơng có tính tốn phân tán, truy vấn tối ưu hóa để thực cơng việc Lazy API cho phép người dùng tối ưu hóa truy vấn trước chạy đặc biệt với liệu lớn việc sử dụng lazy API trở nên vô hiệu quả  Sử dụng lazy API 1.1 Từ File  Sử dụng lazy API từ tệp trình tối ưu hóa truy vấn giúp giảm lượng liệu đọc từ tệp Truy vấn với scan_csv()  Tải liệu từ tệp CSV  Chuyển đổi cột name thành chữ hoa  Áp dụng lọc cho cột age Hàm scan() có sẵn cho số loại tệp bao gồm CSV , Parquet , IPC JSON  1.2 Từ DataFrame Gọi lazy() DataFrame tạo sẵn nhớ, cách chuyển từ DataFrame thành LazyFrame Kết : 22 Lấy thông tin liệu lazy API  Hàm trả đối tượng Schema, chứa thông tin cột DataFrame, bao gồm tên, kiểu liệu giá trị mặc định (nếu có) Kết quả: 2.1 Nhập kiểm tra lazy API  Một ưu điểm lazy API Polars kiểm tra việc lấy thông tin trước liệu xử lý Kiểm tra xảy bạn thực “ lazy” truy vấn  Hàm round() thực cột số nguyên có tên “bar” Kết quả:   Hàm round() hợp lệ cho cột có dtype float64 Gọi round() cột số nguyên có nghĩa thao tác gây lỗi SchemaError Nếu mà thực truy vấn chế độ “eager”, lỗi tìm thấy liệu xử lý tất bước trước Ngược lại thực với chế độ “lazy”, Polars kiểm tra lỗi SchemaError trước bước tốn nhiều thời gian để xử lý liệu quy trình         2.2 Xử lý với thao tác khơng có sẵn lazy API  Khi quy trình có hoạt động khơng có sẵn lazy API thực sau: Tạo DataFrame đơn giản Chuyển đổi DataFrame thành Lazy Frame với lazy() Sử dụng with_columns() Thực truy vấn collect() để DataFrame Sử dụng pivot() DataFrame Chuyển đổi trở lại chế độ “lazy” Sử dụng filter() Kết thúc truy vấn với collect() để DataFrame 23 Kết quả: Thực truy vấn  Dữ liệu mẫu ban đầu từ file CSV:  Để thực truy vấn tập liệu đầy đủ cách gọi hàm collect() truy vấn 24 Kết quả: Với hàm collect() mặc định, Polars xử lý tất liệu thành đợt Điều có nghĩa tất liệu phải vừa với nhớ khả dụng điểm sử dụng nhớ cao truy vấn IV Kết luận Trong báo cáo này, tìm hiểu thư viện Polars Python, cơng cụ hữu ích giúp xử lý liệu cách nhanh chóng hiệu Chúng ta sâu vào tính thư viện tìm hiểu cách sử dụng chúng qua ví dụ cụ thể để thực thao tác phân tích liệu phổ biến Như vậy, thấy Polars công cụ mạnh mẽ để xử lý liệu Python, với khả hỗ trợ tính phức tạp phân tích đa luồng, xử lý liệu theo cột hàng, trộn liệu từ nhiều nguồn khác nhau, nhiều Với tiện lợi hiệu Polars, dễ dàng nhanh chóng phân tích liệu cách đáng tin cậy, giúp giải vấn đề phức tạp dự án liệu Từ đó, Polars đóng góp đáng kể vào trình phát triển nghiên cứu khoa học liệu 25 TÀI LIỆU THAM KHẢO Hiếu, N V (2023, March 11) Polars - Xử lý liệu dạng bảng nhanh 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 https://towardsdatascience.com/understanding-lazyevaluation-in-polars-b85ccb864d0c McKinney, W (2017, September 21) Apache Arrow and the “10 Things I Hate About pandas” - Wes McKinney Wesmckinney.com https://wesmckinney.com/blog/apache-arrowpandas-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-comparison5aa54e27497e panData (2023, March 3) Discover the Power of Polars Library for Fast and Efficient Data Manipulation in Python Medium https://python.plainenglish.io/discovering-polarslibrary-1d63c1eefb44 Polars, lightning-fast DataFrame library (n.d.) Www.pola.rs Retrieved April 24, 2023, from https://www.pola.rs/ Using the Polars DataFrame Library (n.d.) Www.codemag.com Retrieved April 24, 2023, from https://www.codemag.com/Article/2212051/Using-the-Polars-DataFrame-Library 26

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