Chuyển đến nội dung chính
Python

Giới thiệu về Polars: Công cụ Python cho phân tích dữ liệu quy mô lớn

Khám phá Polars, một thư viện Python mạnh mẽ để thao tác và phân tích dữ liệu hiệu năng cao. Tìm hiểu các tính năng, ưu điểm so với pandas, và cách nó có thể thay đổi quy trình phân tích dữ liệu của bạn.
Moez Ali's photo
Moez Ali
Đã cập nhật · 9 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Tạo tài khoản miễn phí của bạn

Luyện tập và Lộ trình tiến trình của bạn.

Tiếp Tục Với Google
Bằng cách tiếp tục, bạn chấp nhận Điều khoản sử dụng, Chính sách bảo mật và việc dữ liệu của bạn được lưu trữ tại Hoa Kỳ.

Trong thế giới phân tích dữ liệu, Python là một ngôn ngữ phổ biến nhờ tính linh hoạt và hệ sinh thái thư viện phong phú. Thao tác dữ liệu và phân tích đóng vai trò then chốt trong việc khai thác insight và đưa ra quyết định sáng suốt. Tuy nhiên, khi các bộ dữ liệu ngày càng lớn và phức tạp, nhu cầu về các giải pháp hiệu năng cao trở nên tối quan trọng.

Xử lý hiệu quả các bộ dữ liệu lớn đòi hỏi những công cụ có thể tính toán nhanh và tối ưu hóa hoạt động. Đây là lúc Polars xuất hiện. Polars là một thư viện mã nguồn mở mạnh mẽ, được thiết kế riêng cho thao tác và phân tích dữ liệu hiệu năng cao trong Python.

Các tính năng của Polars

Polars là một thư viện DataFrame được viết hoàn toàn bằng Rust, xây dựng để trao cho nhà phát triển Python một khung làm việc có khả năng mở rộng và hiệu quả trong xử lý dữ liệu, và được xem như một lựa chọn thay thế cho thư viện pandas rất phổ biến. Nó cung cấp nhiều chức năng hỗ trợ các tác vụ thao tác và phân tích dữ liệu khác nhau. Một số tính năng chính và ưu điểm khi sử dụng Polars gồm:

1. Tốc độ và hiệu năng

Polars được thiết kế chú trọng đến hiệu năng. Nó tận dụng xử lý song song và kỹ thuật tối ưu bộ nhớ, cho phép xử lý các bộ dữ liệu lớn nhanh hơn đáng kể so với các phương pháp truyền thống.

2. Khả năng thao tác dữ liệu

Polars cung cấp một bộ công cụ toàn diện cho thao tác dữ liệu, bao gồm các thao tác thiết yếu như lọc, sắp xếp, nhóm, nối và tổng hợp dữ liệu. Dù có thể chưa đa năng bằng pandas do còn tương đối mới, Polars bao phủ khoảng 80% các thao tác phổ biến trong Pandas.

3. Cú pháp diễn đạt

Polars sử dụng cú pháp cô đọng và trực quan, giúp dễ học và dễ dùng. Cú pháp của nó gợi nhớ đến các thư viện Python phổ biến như pandas, cho phép người dùng nhanh chóng làm quen với Polars và tận dụng kiến thức sẵn có.

4. Cấu trúc DataFrame và Series

Cốt lõi của Polars là các cấu trúc DataFrame và Series, mang đến một trừu tượng quen thuộc và mạnh mẽ để làm việc với dữ liệu dạng bảng. Các thao tác DataFrame trong Polars có thể được xâu chuỗi, giúp biến đổi dữ liệu hiệu quả và gọn nhẹ.

5. Polars hỗ trợ đánh giá lười (lazy evaluation)

Polars tích hợp đánh giá lười, tức là xem xét và tối ưu truy vấn nhằm tăng hiệu năng và giảm tiêu thụ bộ nhớ. Khi làm việc với Polars, thư viện sẽ phân tích truy vấn của bạn và tìm cơ hội đẩy nhanh thực thi hoặc giảm sử dụng bộ nhớ. Ngược lại, Pandas chỉ hỗ trợ đánh giá tức thời (eager), theo đó biểu thức được tính ngay khi gặp.

Vì sao chọn Polars khi đã có pandas?

pandas, một thư viện được sử dụng rộng rãi, nổi tiếng vì tính linh hoạt và dễ dùng. Tuy nhiên, khi xử lý các bộ dữ liệu lớn, Pandas có thể gặp nút thắt hiệu năng do phụ thuộc vào thực thi đơn luồng. Khi kích thước dữ liệu tăng, thời gian xử lý có thể kéo dài quá mức, làm giảm năng suất.

Polars được thiết kế đặc biệt để xử lý hiệu quả các bộ dữ liệu lớn. Với chiến lược đánh giá lười và khả năng thực thi song song, Polars vượt trội trong việc xử lý lượng dữ liệu lớn một cách nhanh chóng. Bằng cách phân tán tính toán trên nhiều lõi CPU, Polars tận dụng tính song song để mang lại mức tăng hiệu năng ấn tượng. Xem bài kiểm thử so sánh tốc độ giữa Pandas và Polars của Yuki.

image4.png

Nguồn hình ảnh

Để xem so sánh đầy đủ giữa Polars và pandas, hãy xem bài viết riêng của chúng tôi.

Cài đặt Polars

Bạn có thể cài đặt Polars qua pip, trình quản lý gói Python. Mở giao diện dòng lệnh và chạy lệnh sau:

install polars

Nạp một bộ dữ liệu trong Polars

Polars cung cấp các phương thức tiện lợi để nạp dữ liệu từ nhiều nguồn, bao gồm tệp CSV, tệp Parquet và Pandas DataFrame. Các phương thức đọc tệp CSV hoặc Parquet giống với thư viện pandas.

# read csv file
import polars as pl
data = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# check the head
data.head()

Kết quả:

image2.png

Kiểu của data là polars.DataFrame.

type(data)
>>> polars.dataframe.frame.DataFrame

Kết quả:

image7.png

Các hàm thao tác dữ liệu thường dùng với Polars

Polars cung cấp một tập chức năng toàn diện cho thao tác dữ liệu, cho phép bạn chọn, lọc, sắp xếp, biến đổi và làm sạch dữ liệu một cách dễ dàng. Hãy cùng khám phá một số tác vụ thao tác dữ liệu phổ biến và cách thực hiện chúng với Polars:

1. Chọn và lọc dữ liệu

Để chọn các cột cụ thể từ một DataFrame, bạn có thể dùng phương thức select(). Ví dụ:

import polars as pl


# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# Select specific columns: carat, cut, and price
selected_df = df.select(['Carat Weight', 'Cut', 'Price'])


# show selected_df head
selected_df.head()

Kết quả:

image1.png

Lọc các hàng dựa trên điều kiện nhất định có thể thực hiện bằng phương thức filter(). Chẳng hạn, để lọc các hàng có trọng lượng carat lớn hơn 1.0, bạn có thể làm như sau:

import polars as pl


# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# filter the df with condition
filtered_df = df.filter(pl.col('Carat Weight') > 2.0)


# show filtered_df head
filtered_df.head()

Kết quả:

image9.png

2. Sắp xếp và thiết lập thứ tự dữ liệu

Polars cung cấp phương thức sort() để sắp xếp DataFrame dựa trên một hoặc nhiều cột. Ví dụ:

import polars as pl


# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# sort the df by price
sorted_df = df.sort(by='Price')


# show sorted_df head
sorted_df.head()

Kết quả:

image12.png

3. Xử lý giá trị khuyết

Polars cung cấp các phương thức tiện lợi để xử lý giá trị khuyết. Phương thức drop_nulls() cho phép bạn loại bỏ các hàng có chứa bất kỳ giá trị khuyết nào:

import polars as pl


# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# drop missing values
cleaned_df = df.drop_nulls()


# show cleaned_df head
cleaned_df.head()

Kết quả:

image5.png

Ngoài ra, bạn có thể dùng phương thức fill_nulls() để thay thế các giá trị khuyết bằng một giá trị mặc định nhất định hoặc theo phương pháp điền cụ thể.

4. Nhóm dữ liệu theo các cột cụ thể

Để nhóm dữ liệu theo các cột cụ thể, bạn có thể dùng phương thức groupby(). Ví dụ sau nhóm dữ liệu theo cột Cut và tính Price trung bình cho mỗi nhóm:

import polars as pl


# Load diamond data from a CSV file
df = pl.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/diamond.csv')


# group by cut and calc mean of price
grouped_df = df.groupby(by='Cut').agg(pl.col('Price').mean())


# show grouped_df head
grouped_df.head()

Kết quả:

image8.png

Trong kết quả trên, bạn có thể thấy giá trung bình của kim cương theo chiều Cut.

5. Nối và kết hợp các DataFrame

Polars cung cấp các tùy chọn linh hoạt để nối và kết hợp DataFrame, cho phép bạn hợp nhất và ghép dữ liệu từ các nguồn khác nhau. Để thực hiện phép nối, bạn có thể dùng phương thức join(). Ví dụ sau minh họa phép nối trong (inner join) giữa hai DataFrame dựa trên một cột khóa chung:

import polars as pl


# Create the first DataFrame
df1 = pl.DataFrame({
    'id': [1, 2, 3, 4],
    'name': ['Alice', 'Bob', 'Charlie', 'David']
})


# Create the second DataFrame
df2 = pl.DataFrame({
    'id': [2, 3, 5],
    'age': [25, 30, 35]
})


# Perform an inner join on the 'id' column
joined_df = df1.join(df2, on='id')


# Display the joined DataFrame
joined_df

Kết quả:

image6.png

Trong ví dụ này, chúng ta tạo hai DataFrame (df1 và df2) bằng hàm dựng pl.DataFrame. DataFrame đầu tiên df1 chứa các cột id và name, còn DataFrame thứ hai df2 chứa các cột id và age. Sau đó, chúng ta thực hiện phép nối trong trên cột id bằng phương thức join(), chỉ định cột id là khóa nối.

Tích hợp và khả năng tương tác

Polars mang đến khả năng tích hợp liền mạch với các thư viện Python phổ biến khác, cho phép nhà phân tích dữ liệu tận dụng nhiều công cụ và chức năng. Hãy cùng khám phá hai khía cạnh chính của tích hợp: làm việc với các thư viện khác và khả năng tương tác với Pandas.

Tích hợp Polars với các thư viện Python khác

Polars tích hợp thuận tiện với các thư viện như NumPy và PyArrow, giúp người dùng kết hợp thế mạnh của nhiều công cụ trong quy trình phân tích dữ liệu. Với tích hợp NumPy, Polars chuyển đổi dễ dàng giữa Polars DataFrame và mảng NumPy, tận dụng khả năng tính toán khoa học mạnh mẽ của NumPy. Sự tích hợp này đảm bảo quá trình chuyển đổi dữ liệu mượt mà và cho phép nhà phân tích áp dụng trực tiếp các hàm NumPy lên dữ liệu Polars.

Tương tự, bằng cách tận dụng PyArrow, Polars tối ưu việc truyền dữ liệu giữa Polars và các hệ thống dựa trên Arrow. Sự tích hợp này cho phép làm việc liền mạch với dữ liệu lưu ở định dạng Arrow và khai thác khả năng thao tác dữ liệu hiệu năng cao của Polars.

Chuyển đổi Polars DataFrame sang pandas DataFrame

Polars hỗ trợ chuyển đổi liền mạch từ Polars DataFrame sang Pandas DataFrame. Dưới đây là ví dụ minh họa việc chuyển đổi từ Polars sang pandas.

import polars as pl
import pandas as pd


# Create a Polars DataFrame
df_polars = pl.DataFrame({
    'column_A': [1, 2, 3],
    'column_B': ['apple', 'banana', 'orange']
})


# Convert Polars DataFrame to Pandas DataFrame
df_pandas = df_polars.to_pandas()


# Display the Pandas DataFrame
df_pandas

Kết quả:

image3.png

Kết luận

Polars là một thư viện mạnh mẽ dành cho thao tác và phân tích dữ liệu hiệu năng cao trong Python. Tốc độ và các tối ưu hiệu năng khiến nó trở thành lựa chọn lý tưởng để xử lý hiệu quả các bộ dữ liệu lớn.

Với cú pháp diễn đạt và cấu trúc DataFrame, Polars mang đến giao diện quen thuộc và trực quan cho các tác vụ thao tác dữ liệu. Hơn nữa, Polars tích hợp liền mạch với các thư viện Python khác như NumPy và PyArrow, mở rộng khả năng và cho phép người dùng tận dụng một hệ sinh thái công cụ đa dạng.

Khả năng chuyển đổi Polars DataFrame sang pandas DataFrame đảm bảo tính tương tác và giúp tích hợp Polars vào các quy trình hiện có. Dù bạn đang làm việc với kiểu dữ liệu phức tạp, xử lý các bộ dữ liệu lớn hay tìm kiếm cải thiện hiệu năng, Polars cung cấp một bộ công cụ toàn diện để khai mở toàn bộ tiềm năng cho các nỗ lực phân tích dữ liệu của bạn.


Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Nhà khoa học dữ liệu, Nhà sáng lập & Người tạo ra PyCaret

Chủ đề
Python

Các khóa học thao tác dữ liệu Python hàng đầu

Khóa học

Xử lý dữ liệu với pandas

4 giờ
567.9K
Tìm hiểu cách nhập và làm sạch dữ liệu, tính toán thống kê và tạo trực quan hóa với pandas.
Xem chi tiếtBắt Đầu Khóa Học

Tạo tài khoản miễn phí của bạn

Luyện tập và Lộ trình tiến trình của bạn.

Tiếp Tục Với Google
Bằng cách tiếp tục, bạn chấp nhận Điều khoản sử dụng, Chính sách bảo mật và việc dữ liệu của bạn được lưu trữ tại Hoa Kỳ.
Xem thêm
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem thêm