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

Python Tabulate: Hướng dẫn đầy đủ

Sử dụng thư viện tabulate trong Python để tạo các bảng được định dạng đẹp. Tìm hiểu các tính năng nâng cao và các tùy chọn tùy chỉnh giao diện bảng.
· 8 phút đọc

Khám phá cùng AI

Dữ liệu dạng bảng đề cập đến dữ liệu có cấu trúc theo hàng và cột. Việc cấu trúc dữ liệu theo cách này rất quan trọng vì giúp dễ dàng diễn giải kết quả. Trong Python, chúng ta có thể tạo dữ liệu dạng bảng trông đẹp mắt bằng cách sử dụng thư viện tabulate. Thư viện tabulate dễ sử dụng và đã trở thành một trong những công cụ ưa thích của các nhà khoa học dữ liệu, nhà phân tích và lập trình viên khi cần tạo các bảng được định dạng sạch sẽ để trình bày.

Nếu bạn mới bắt đầu với vai trò nhà phân tích dữ liệu hoặc nhà khoa học dữ liệu, tôi khuyến nghị khóa học Introduction to Python của DataCamp để học những kiến thức cơ bản về ngôn ngữ Python, bao gồm hàm và gói. 

Python Tabulate là gì?

Gói tabulate trong Python tạo các bảng được định dạng tốt từ nhiều nguồn dữ liệu khác nhau. Các trường hợp sử dụng chính của gói tabulate bao gồm:

  • Hiển thị dữ liệu trong giao diện dòng lệnh (CLI): Gói tabulate giúp lập trình viên hiển thị các bảng được định dạng theo cách dễ đọc trên terminal hoặc console.

  • Jupyter Notebooks: Hàm tabulate() giúp hiển thị các bảng đẹp trong Jupyter Notebooks.

  • Ứng dụng web: Gói tabulate giúp lập trình viên hiển thị các bảng ở định dạng HTML trong ứng dụng web.

Một số tính năng chính của thư viện tabulate bao gồm:

  • Nhiều định dạng đầu ra: Gói tabulate cho phép xuất bảng ở nhiều định dạng, bao gồm văn bản thuần, HTML, LaTeX và các định dạng khác; do đó người dùng có thể chọn theo nhu cầu.

  • Căn chỉnh cột tự động: tabulate tự động căn chỉnh các cột có kiểu dữ liệu khác nhau, bao gồm chuỗi, số và các kiểu khác. 

  • Xử lý nhiều cấu trúc dữ liệu: tabulate xử lý dictionary, list, DataFrame của pandas và mảng NumPy.

Cách cài đặt Tabulate trong Python

Bạn có thể dùng trình quản lý gói pip để cài đặt gói tabulate trong Python. Trên terminal hoặc command prompt, gõ và chạy lệnh sau:

pip install tabulate

Nếu bạn muốn cài đặt gói cho một người dùng duy nhất mà không cần đặc quyền quản trị, bạn có thể dùng cờ –user như bên dưới.

pip install --user tabulate

Bạn có thể tạo môi trường ảo mới bằng lệnh sau khi chạy script trong môi trường ảo.

python -m venv myenv

Để kích hoạt môi trường ảo, chạy các lệnh sau:

Đối với Windows:

myenv\Scripts\activate

Đối với macOS/Linux:

source myenv/bin/activate

Nếu cài đặt thành công, bạn có thể chạy đoạn mã sau trong trình soạn thảo Python để kiểm tra số phiên bản của gói tabulate trong môi trường Python.

import tabulate
print(tabulate.__version__)

Nếu bạn thấy công cụ của mình cần cập nhật, hãy đọc hướng dẫn: Cách nâng cấp Python và Pip trên Windows, MacOS và Linux.

Cách dùng cơ bản của Python Tabulate

Các ví dụ dưới đây minh họa cách dùng cơ bản của gói tabulate để tạo các bảng được định dạng.

Tạo bảng đơn giản

Cách đơn giản nhất để dùng hàm tabulate() tạo bảng là cung cấp một list các list. Các đối số chính trong cú pháp hàm tabulate() gồm:

  • tabular_data: Dữ liệu cần định dạng như list các list hoặc dictionary.

  • headers: Các tiêu đề cột trong bảng. Nếu bỏ qua, bảng sẽ không có tiêu đề.

  • tablefmt: Định dạng đầu ra của bảng như “plain”, “pipe”, “grid” hoặc “html”.

Ví dụ dưới đây cho thấy cách dùng hàm tabulate() để tạo một bảng định dạng dạng lưới (grid).

# Import the tabulate module
from tabulate import tabulate

# Sample data: list of lists
data = [
    ["Alice", 24, "Engineer"],
    ["Bob", 30, "Data Scientist"],
    ["Charlie", 28, "Teacher"]
]

# Creating a table with headers and a grid format
table = tabulate(
    data, 
    headers=["Name", "Age", "Profession"], 
    tablefmt="grid"
)

print(table)

Bảng định dạng dạng lưới bằng Python tabulate.

Bảng định dạng dạng lưới bằng Python tabulate. Ảnh: Tác giả.

Tìm hiểu thêm về list và các cấu trúc dữ liệu khác trong Python qua lộ trình kỹ năng Python Fundamentals của chúng tôi.

Hiển thị dữ liệu từ pandas DataFrame

pandas DataFrame là cấu trúc dữ liệu phổ biến trong Python để xử lý dữ liệu dạng bảng. Với thư viện tabulate, bạn có thể định dạng dữ liệu dạng bảng theo nhiều định dạng khác nhau tùy theo yêu cầu. Ví dụ sau minh họa cách hiển thị bảng sử dụng định dạng ‘pipe’.

# Import libraries
import pandas as pd
from tabulate import tabulate

# Sample DataFrame
df = pd.DataFrame({
    "Name": ["Alice", "Bob", "Charlie"],
    "Age": [24, 30, 28],
    "Profession": ["Engineer", "Data Scientist", "Teacher"]
})

# Displaying the DataFrame as a formatted table
table = tabulate(
    df, 
    headers='keys', 
    tablefmt='pipe'
)

print(table)

Đầu ra bảng sử dụng kiểu định dạng pipe trong hàm Python tabulate.

Đầu ra bảng sử dụng kiểu định dạng pipe trong hàm tabulate() của Python. Ảnh: Tác giả.

Vẫn với DataFrame df, bạn có thể hiển thị bảng ở định dạng lưới.

print(tabulate(df, headers='keys', tablefmt='grid'))

Đầu ra bảng sử dụng kiểu định dạng lưới trong hàm Python tabulate.

Đầu ra bảng sử dụng kiểu định dạng lưới trong hàm tabulate() của Python. Ảnh: Tác giả.

Các tính năng nâng cao của Python Tabulate

Thư viện tabulate cung cấp các tính năng nâng cao cho phép bạn tùy chỉnh giao diện của các bảng phức tạp. Hãy cùng thảo luận một số tính năng này.

Tùy chỉnh giao diện bảng

Thư viện tabulate cung cấp nhiều cách để tùy chỉnh giao diện bảng, như điều chỉnh căn lề, đặt độ rộng cột và sử dụng các định dạng bảng khác nhau. Dưới đây là một số tùy chọn định dạng chính.

  • numalign: Kiểm soát căn lề của các cột số. Giá trị chấp nhận gồm "left", "center" và "right".

  • stralign: Kiểm soát căn lề của các cột chuỗi. Giá trị chấp nhận gồm "left", "center" và "right".

  • colalign: Cho phép căn chỉnh cụ thể cho từng cột bằng cách cung cấp một danh sách các tùy chọn căn lề.

Ví dụ dưới đây minh họa việc áp dụng các tùy chọn định dạng này.

from tabulate import tabulate

# Sample data: list of lists
data = [
    ["Alice", 24, 1200.50],
    ["Bob", 30, 3500.75],
    ["Charlie", 28, 2500.00]
]

# Customizing table appearance
table = tabulate(
    data,
    headers=["Name", "Age", "Salary"],
    tablefmt="fancy_grid",
    numalign="right",
    stralign="center",
    colalign=("center", "center", "right")
)

print(table)

Đầu ra bảng đã được tùy chỉnh bằng Python tabulate.

Đầu ra bảng đã được tùy chỉnh bằng Python tabulate. Ảnh: Tác giả.

Xử lý ô nhiều dòng

Thư viện tabulate cũng cho phép bạn xử lý dữ liệu văn bản vượt quá độ rộng cột thông thường. Đối số maxcolwidths chỉ định độ rộng tối đa của mỗi ô trong bảng đầu ra để quản lý việc xuống dòng trong ô. Tính năng này cho phép hiển thị thông tin dài theo cách dễ đọc hơn.

Trong ví dụ dưới đây, maxcolwidths được đặt là 30 ký tự để tự động xuống dòng dữ liệu văn bản thành nhiều dòng nếu vượt quá số ký tự quy định.

# Import tabulate library
from tabulate import tabulate

# Sample text data
data = [
    ["Alice", "Lorem ipsum dolor sit amet, consectetur adipiscing elit."],
    ["Bob", "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."],
    ["Charlie", "Ut enim ad minim veniam, quis nostrud exercitation ullamco."]
]

# Creating a table with multiline cells
table = tabulate(
    data,
    headers=["Name", "Description"],
    tablefmt="grid",
    maxcolwidths=[None, 30]  # Set maximum width for the Description column
)

print(table)

Đầu ra bảng xử lý nhiều dòng bằng Python tabulate.

Đầu ra bảng xử lý nhiều dòng bằng Python tabulate. Ảnh: Tác giả.

Sử dụng tiện ích dòng lệnh

Thư viện tabulate cung cấp một tiện ích dòng lệnh giúp bạn hiển thị bảng trực tiếp từ command line hoặc terminal. Tiện ích này cho phép bạn tạo bảng mà không cần viết thêm mã Python.

Giả sử bạn có một tệp CSV tên là data.csv. Bạn sẽ dùng lệnh sau để tạo bảng bằng tabulate.

cat data.csv | tabulate -d , -f grid

Trong đó:

  • cat data.csv đọc nội dung của tệp CSV.

  • -d , chỉ định dấu phân tách (dấu phẩy cho CSV).

  • -f grid đặt định dạng đầu ra theo kiểu grid.

Ví dụ thực tế và trường hợp sử dụng

Trong phần này, chúng ta sẽ khám phá các trường hợp sử dụng khác nhau của thư viện tabulate để hiển thị bảng trong Python.

Hiển thị dữ liệu bán hàng

Giả sử chúng ta có dữ liệu bán hàng sau.

# Sample sales data
sales_data = [
    ["Q1", 15000, 12000, 13000],
    ["Q2", 17000, 16000, 14500],
    ["Q3", 18000, 15000, 16000],
    ["Q4", 20000, 21000, 19000]
]

headers = ["Quarter", "Product A", "Product B", "Product C"]

Bạn có thể hiển thị dữ liệu trong bảng bằng định dạng fancy_grid.

# Import tabulate library
from tabulate import tabulate

# Displaying sales data using the 'fancy_grid' format
table_fancy = tabulate(sales_data, headers=headers, tablefmt="fancy_grid")

print(table_fancy)

Đầu ra bảng sử dụng định dạng fancy_grid trong Python tabulate.

Đầu ra bảng sử dụng định dạng fancy_grid trong Python tabulate. Ảnh: Tác giả.

Bạn cũng có thể hiển thị dữ liệu ở định dạng HTML bằng cách đặt tablefmt là html.

# Displaying sales data using the 'html' format
table_html = tabulate(sales_data, headers=headers, tablefmt="HTML")

print(table_html)

Đầu ra:

<table>
<thead>
<tr><th>Quarter  </th><th style="text-align: right;">  Product A</th><th style="text-align: right;">  Product B</th><th style="text-align: right;">  Product C</th></tr>
</thead>
<tbody>
<tr><td>Q1       </td><td style="text-align: right;">      15000</td><td style="text-align: right;">      12000</td><td style="text-align: right;">      13000</td></tr>
<tr><td>Q2       </td><td style="text-align: right;">      17000</td><td style="text-align: right;">      16000</td><td style="text-align: right;">      14500</td></tr>
<tr><td>Q3       </td><td style="text-align: right;">      18000</td><td style="text-align: right;">      15000</td><td style="text-align: right;">      16000</td></tr>
<tr><td>Q4       </td><td style="text-align: right;">      20000</td><td style="text-align: right;">      21000</td><td style="text-align: right;">      19000</td></tr>
</tbody>
</table>

Đầu ra bảng HTML hữu ích trong các tích hợp web nếu bạn muốn nhúng bảng vào website. Bạn cũng có thể tùy chỉnh thêm bảng HTML bằng CSS để có giao diện hấp dẫn hơn với người dùng.

Tích hợp với Jupyter Notebooks

Thư viện tabulate có thể dễ dàng tích hợp với Jupyter Notebooks để trình bày dữ liệu thuận tiện hơn. Ví dụ dưới đây cho thấy cách tạo một DataFrame mẫu trong Jupyter Notebook và hiển thị nó dưới dạng bảng định dạng lưới.

# Import required library
import pandas as pd
from tabulate import tabulate

# Sample student exam scores DataFrame
exam_scores_df = pd.DataFrame({
    "Student": ["Alice", "Bob", "Charlie", "David"],
    "Math": [85, 90, 78, 92],
    "Science": [88, 76, 95, 85],
    "English": [90, 88, 84, 91]
})

# Displaying the DataFrame as a formatted table using 'grid' format
table_jupyter = tabulate(exam_scores_df, headers='keys', tablefmt='grid')

print(table_jupyter)

Đầu ra bảng dữ liệu hiển thị bằng Python tabulate tích hợp với Jupyter Notebook.

Đầu ra bảng sử dụng Python tabulate tích hợp với Jupyter Notebook. Ảnh: Tác giả.

Ưu điểm của việc dùng thư viện tabulate trong môi trường Jupyter là nâng cao khả năng đọc và so sánh dữ liệu, đặc biệt hữu ích cho các tác vụ phân tích dữ liệu.

Kết luận

Thư viện tabulate rất quan trọng để tạo các bảng được định dạng đẹp trong Python. Như bạn đã thấy, nó cũng mang lại sự linh hoạt để dùng trong các môi trường khác nhau như Jupyter Notebooks, dòng lệnh và ứng dụng web, bao gồm cả các tùy chọn đầu ra như HTML. 

Nếu bạn muốn nâng cao kỹ năng Python, tôi rất khuyến nghị lộ trình kỹ năng Python Programming của DataCamp. Tôi cũng khuyến khích bạn xem các lộ trình nghề nghiệp Python Developer và Data Analyst with Python để xây dựng kỹ năng phù hợp công việc nhằm trở thành một nhà phân tích dữ liệu thành thạo. Ngoài ra, nếu bạn thích làm việc với bảng trong Python, hãy thử khóa Introduction to Databases in Python của DataCamp để tìm hiểu thêm về việc dùng SQL với Python. Cuối cùng, hãy nhấp bên dưới để trở thành một nhà khoa học máy học bằng Python, nếu bạn đã sẵn sàng cho bước tiến thú vị đó.

Allan Ouko

Tác giả

Allan Ouko

Biên tập viên kỹ thuật về Khoa học dữ liệu với kinh nghiệm thực tế trong phân tích dữ liệu, trí tuệ doanh nghiệp và khoa học dữ liệu. Tôi viết nội dung thực tiễn, tập trung vào ngành về SQL, Python, Power BI, Databricks và kỹ thuật dữ liệu, dựa trên công việc phân tích trong thế giới thực. Bài viết của tôi kết nối chiều sâu kỹ thuật với tác động kinh doanh, giúp các chuyên gia chuyển đổi dữ liệu thành những quyết định vững chắc.

Câu hỏi thường gặp

Thư viện tabulate trong Python là gì?

Thư viện tabulate tạo các bảng được định dạng đẹp từ nhiều cấu trúc dữ liệu khác nhau trong Python.

Làm thế nào để cài đặt thư viện tabulate?

Để cài đặt thư viện tabulate, hãy dùng lệnh pip install tabulate.

Những định dạng đầu ra nào được hỗ trợ trong thư viện tabulate của Python?

Thư viện tabulate hỗ trợ đầu ra bảng ở các định dạng văn bản thuần, HTML, grid, LaTeX, Markdown và các định dạng khác.

Những cấu trúc dữ liệu nào được hỗ trợ trong thư viện tabulate?

Thư viện tabulate có thể được dùng để tạo đầu ra bảng từ các cấu trúc dữ liệu sau: List các list, list các dictionary, dictionary của các iterable, mảng NumPy hai chiều và Pandas DataFrame.

Có thể dùng thư viện tabulate trực tiếp trong dòng lệnh không?

Tabulate cung cấp một tiện ích dòng lệnh để tạo bảng trực tiếp từ terminal mà không cần viết toàn bộ mã Python.

Chủ đề

Liên quan