Bài viết Câu hỏi About RongvangIT
profile Pic
0
0

Đăng ngày:

 

Sửa ngày:

95 Lượt xem

Hướng dẫn cơ bản về Polars - những kiến thức tối thiểu để bắt đầu sử dụng

PythonPolars

Chào buổi sáng, đây là một hướng dẫn giới thiệu về Polars cho những người mới bắt đầu, với mục tiêu chính là học cách sử dụng Polars một cách cơ bản nhất mà không cần hiểu sâu về nó.

Đặc điểm của bài viết

:::note info
Bài viết này sẽ không đi sâu vào chi tiết cách sử dụng Polars.
:::

Mục tiêu chính của bài viết này như sau:

“Bằng cách đọc bài viết này, bạn sẽ hiểu cách sử dụng Polars một cách cơ bản và có thể bắt đầu làm việc với Polars ngay lập tức.”

Vì đã có nhiều bài viết trên rongvangit.com giới thiệu chi tiết về cách sử dụng Polars, bạn có thể tìm hiểu chi tiết hơn ở đó. Bài viết này chỉ tập trung vào bước đầu tiên để bắt đầu với Polars, nên chỉ giới thiệu những tính năng cơ bản nhất.

Polars là gì

Polars là một thư viện được sử dụng để tổng hợp các bảng dữ liệu lớn trong Python.

Pandas là thư viện tiêu biểu cho mục đích này, nhưng gần đây, Polars dần trở nên phổ biến hơn. Nguyên nhân chính là sự dễ viết và hiệu suất thực thi nhanh hơn của Polars. (Ngoài ra, bài viết này giới thiệu nhiều đặc điểm khác của Polars.)

Chuẩn bị

Cài đặt

Bạn có thể dễ dàng cài đặt Polars từ pip:

> pip install polars

Nhập

Thường sử dụng tên viết tắt là “pl” khi làm việc với Polars.

import polars
import polars as pl # Thường sử dụng cách này

Đọc và Ghi Tệp

Đọc tệp

df = pl.read_csv("data.csv")

Ghi tệp

:::note warn
Polars không hỗ trợ việc ghi tệp không phải là utf8, vì vậy nếu bạn đang sử dụng một bảng mã khác, bạn cần chuyển đổi hoặc sử dụng phương thức open trong Python.
:::

df.write_csv("data.csv")

Phương pháp tính toán và tổng hợp dữ liệu

Polars có thể thực hiện các phép toán và tổng hợp dữ liệu giống như Pandas, nhưng cú pháp thực hiện có chút khác biệt. Vì vậy, để dễ hình dung, trước hết, tôi sẽ giới thiệu một định dạng cú pháp cơ bản để xử lý dữ liệu trong Polars (được tạo ra bởi tôi).

Tuy nhiên, như tôi đã đề cập ở trên, bài viết chỉ giới thiệu một số tính năng cơ bản nhất. Cách tiếp cận này chỉ giúp bạn có cái nhìn tổng quan và không bao gồm tất cả các tính năng của Polars.

Định dạng cơ bản của việc sử dụng Polars

Trong Polars, chúng ta thường sử dụng các phương thức selectfilter. Mỗi phương thức đều chịu trách nhiệm chọn dữ liệu theo cột (và thực hiện xử lý) hoặc chọn dữ liệu theo hàng.

Đặc biệt, khi bạn muốn thực hiện các thao tác trong phương thức, bạn sẽ sử dụng lớp pl.Expr. Đặc biệt, pl.col thường được sử dụng khi thực hiện thao tác trên cột.

Đối với phương thức select, bạn có thể thêm mới một cột bằng cách chọn cột cụ thể và thực hiện xử lý trên nó. Do đó, quy trình cơ bản có vẻ như sau:

df.select(
    # Chọn cột hoặc thực hiện xử lý trên cột
    # Hoặc thêm dữ liệu như một cột mới sau xử lý
).filter(
    # Chọn hàng cụ thể từ dữ liệu
).select(
).filter... # Lặp lại quá trình này

Tuy nhiên, để giải quyết vấn đề một cách tối thiểu với DataFrame, bạn có thể thực hiện chỉ với việc lặp lại các phương thức selectfilter.

Chọn và Thao tác cột select

Bạn có thể sử dụng select để lựa chọn cột cụ thể. Dưới đây là ví dụ về cách sử dụng:

df.select(
    "name",
    "age",
)

# Đầu ra
# shape: (3, 3)
# ┌──────┬─────┐
# │ name ┆ age │
# │ ---  ┆ --- │
# │ str  ┆ i64 │
# ╞══════╪═════╡
#

  one   10  
# │ one  ┆ 20  │
# │ two  ┆ 30  │
# └──────┴─────┘

Ở đây, chúng ta đã chọn cột “name” và “age” bằng cách đơn giản. Nó rất trực quan và dễ hiểu.

Hơn nữa, trong Polars, bạn không cần phải sử dụng mảng để chọn tên cột. (Dù bạn có thể sử dụng mảng, kết quả sẽ giống nhau.)

# Cũng có thể sử dụng mảng để chọn tên cột
df.select(
    ["name","age"]
)

# Đầu ra
# shape: (3, 3)
# ┌──────┬─────┐
# │ name ┆ age │
# │ ---  ┆ --- │
# │ str  ┆ i64 │
# ╞══════╪═════╡
# │ one  ┆ 10  │
# │ one  ┆ 20  │
# │ two  ┆ 30  │
# └──────┴─────┘

Thao tác cột pl.col()

Khi bạn đã chọn cột, bạn muốn thực hiện các thao tác trên cột đó. Lúc này, bạn sẽ sử dụng pl.col() trong phương thức select.

df.select(
    "name",
    pl.col("age")*2
)

# Đầu ra
# shape: (3, 3)
# ┌──────┬─────┐
# │ name ┆ age │
# │ ---  ┆ --- │
# │ str  ┆ i64 │
# ╞══════╪═════╡
# │ one  ┆ 20  │
# │ one  ┆ 40  │
# │ two  ┆ 60  │
# └──────┴─────┘

Như bạn thấy, cột “age” đã được nhân với 2. Nếu bạn muốn lưu kết quả của thao tác này thành một cột mới, bạn có thể sử dụng .alias.

df.select(
    "name",
    "age",
    (pl.col("age")*2).alias("*2")
)

# Đầu ra
# shape: (3, 3)
# ┌──────┬─────┬─────┐
# │ name ┆ age ┆ *2  │
# │ ---  ┆ --- ┆ --- │
# │ str  ┆ i64 ┆ i64 │
# ╞══════╪═════╪═════╡
# │ one  ┆ 10  ┆ 20  │
# │ one  ┆ 20  ┆ 40  │
# │ two  ┆ 30  ┆ 60  │
# └──────┴─────┴─────┘

Thao tác cột với điều kiện pl.when

Khi bạn muốn thực hiện một số thao tác chi tiết hơn, bạn sẽ cần thực hiện điều kiện. Lúc này, bạn có thể sử dụng pl.when và kết hợp với then, otherwise.

df.select(
    "name",
    "age",
    pl.when(pl.col("age")>18)
        .then("Adult")
        .otherwise("Minor")
        .alias("Is Adult")
)

# Đầu ra
# shape: (3, 3)
# ┌──────┬─────┬────────────┐
# │ name ┆ age ┆ Is Adult   │
# │ ---  ┆ --- ┆ ---        │
# │ str  ┆ i64 ┆ str        │
# ╞══════╪═════╪════════════╡
# │ one  ┆ 10  ┆ Minor      │
# │ one  ┆ 20  ┆ Adult      │
# │ two  ┆ 30  ┆ Adult      │
# └──────┴─────┴────────────┘

Chọn hàng filter

Phương thức filter được sử dụng để lọc dữ liệu dựa trên các điều kiện. Thông thường, bạn sẽ sử dụng pl.col khi lọc theo cột.

df.filter(
    pl.col("age") > 10
)

# Đầu ra
# shape: (2, 2)
# ┌──────┬─────┐
# │ name ┆ age │
# │ ---  ┆ --- │
# │ str  ┆ i64 │
# ╞══════╪═════╡
# │ one  ┆ 20  │
# │ two  ┆ 30  │
# └──────┴─────┘

Bạn cũng có thể chỉ định nhiều điều kiện.

df.filter(
    (pl.col("age") > 10)
    & (pl.col("age") < 30)
    # Cần phải đặt trong dấu ngoặc vì ở Python, & hoặc | có mức độ ưu tiên cao
)

# Đầu ra
# shape: (2, 2)
# ┌──────┬─────┐
# │ name ┆ age │
# │ ---  ┆ --- │
# │ str  ┆ i64 │
# ╞══════╪═════╡
# │ one  ┆ 20  │
# └──────┴─────┘

Tất nhiên, bạn có thể lọc theo cột khác, hoặc thậm chí là lọc dữ liệu dựa trên một cột mới thêm vào bằng select.

Kết luận

Như vậy, chúng ta đã giới thiệu cách sử dụng selectfilter trong Polars. Bạn có thể đọc và hiểu mã nguồn sau đây để xem cách chúng ta sử dụng chúng.

dev_pro_it
Đang làm IT tại Japan

Bình luận

Bài viết chưa có bình luận. Hãy trở thành người bình luận đầu tiên!
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic