Cách tạo Pivot table kiểu Excel bằng Python chỉ với 5 dòng code

Cách tạo pivot table kiểu Excel bằng Python chỉ với 5 dòng code

Chia sẻ kiến thức 04/06/2023

Cùng FUNiX tìm hiểu cách tạo pivot table bằng Python chỉ một vài dòng code.

 

Pivot table là một trong những công cụ được sử dụng rộng rãi nhất trong Excel. Cho dù bạn là nhà phân tích dữ liệu, kỹ sư dữ liệu hay người dùng thông thường, rất có thể bạn đều thường xuyên sử dụng MS Excel.

Tuy nhiên, bạn có biết rằng bạn có thể tạo các pivot table trong DataFrames của Python chỉ với một vài dòng code không? Bài viết sau sẽ hướng dẫn bạn cách thực hiện. 

Điều kiện để tạo Pivot Table

Giống như các ngôn ngữ lập trình khác, ngay cả Python cũng cần bạn đáp ứng một số điều kiện tiên quyết trước khi có thể viết code.

Để có được trải nghiệm tối ưu trong khi tạo pivot table đầu tiên của bạn bằng Python, bạn cần:

  • Python IDE: Hầu hết lập trình viên Python đều có môi trường phát triển tích hợp (IDE) được cài đặt sẵn trên hệ thống của họ. Có một số IDE tương thích với Python trên thị trường, bao gồm Jupyter Notebook, PyCharm và nhiều IDE khác.
  • Dữ liệu mẫu: đây là tập dữ liệu mẫu để bạn thử. Hoặc bạn cũng có thể chỉnh sửa các code này trực tiếp trên dữ liệu của bạn.

Link dữ liệu: Sample Superstore

Nhập các thư viện thiết yếu

Vì Python hoạt động dựa trên thư viện của bên thứ ba, nên bạn cần nhập thư viện Pandas.

Bạn có thể dùng Pandas để nhập tệp Excel vào Python và lưu trữ dữ liệu trong DataFrame. Để nhập Pandas, hãy sử dụng lệnh import theo cách sau:

 
import pandas as pd

Cách tạo pivot table trong Python

Vì thư viện hiện có sẵn nên bạn cần nhập tệp Excel vào Python, đây là cơ sở để tạo và thử nghiệm các pivot table trong Python. Lưu trữ dữ liệu đã nhập trong DataFrame với đoạn code sau:

# Create a new DataFrame
# replace with your own path here
path = "C://Users//user/OneDrive//Desktop//" 

# you can define the filename here
file = "Sample - Superstore.xls" 

df = pd.read_excel(path + file)

df.head()

Trong đó:

  • df: Tên biến để lưu trữ dữ liệu DataFrame
  • pd: Alias cho thư viện Pandas
  • read_excel(): Hàm Pandas để đọc tệp Excel vào Python
  • path: Nơi lưu trữ file Excel (Sample Superstore)
  • file: Tên file cần nhập
  • head(): hiển thị năm hàng đầu tiên của DataFrame theo mặc định. 

Đoạn code trên nhập tệp Excel vào Python và lưu trữ dữ liệu trong DataFrame. Cuối cùng, hàm head hiển thị 5 hàng dữ liệu đầu tiên.

Giao diện Jupyter Notebook hiển thị mã Python

Hàm này rất hữu ích để đảm bảo dữ liệu được nhập chính xác vào Python.

Trong Python có trường Pivot Table nào?

Giống như trong Excel, pivot table có một tập hợp các trường tương tự trong Python. Dưới đây là một vài trường bạn cần biết:

  • Data: Trường dữ liệu đề cập đến dữ liệu được lưu trữ trong Khung dữ liệu Python
  • Values: Dữ liệu dạng cột được sử dụng trong một trục
  • Index: Một (các) cột index để nhóm dữ liệu
  • Columns: Cột giúp tổng hợp dữ liệu hiện có trong DataFrame

Mục đích đằng sau việc sử dụng hàm index

Vì hàm index là thành phần chính của pivot table nên nó trả về bố cục cơ bản của dữ liệu. Nói cách khác, bạn có thể nhóm dữ liệu của mình bằng hàm index. 

Giả sử bạn muốn xem một số giá trị tổng hợp cho các sản phẩm được liệt kê trong cột Segment (Phân khúc). Bạn có thể tính toán aggregate được xác định trước (giá trị trung bình) trong Python bằng cách xác định cột được chỉ định làm giá trị index.

df.pivot_table(index = "Segment")

Trong đó:

  • df: DataFrame chứa dữ liệu
  • pivot_table  Hàm pivot table trong Python
  • index: hàm có sẵn để xác định cột làm index
  • Segment: Cột để sử dụng làm giá trị index

Lưu ý: Tên biến của Python phân biệt chữ hoa chữ thường

Giao diện Jupyter Notebook hiển thị mã Python

Cách sử dụng các giá trị đa index

Khi bạn muốn sử dụng nhiều cột index, bạn có thể xác định tên cột trong list trong hàm index. Bạn chỉ cần chỉ định tên cột trong một tập hợp square brackets ([ ]), như hình dưới đây:

df.pivot_table(index = ["Category", "Sub-Category"])
Giao diện Jupyter Notebook hiển thị mã Python

Hàm pivot thụt lề cột index trong đầu ra. Python hiển thị mean (giá trị trung bình) của tất cả các giá trị số đối với từng giá trị index.

Học cách hạn chế các giá trị trong đầu ra

Vì Python chọn tất cả các cột số theo mặc định, nên bạn có thể hạn chế các giá trị để điều chỉnh kết quả được hiển thị trong đầu ra cuối cùng. Sử dụng hàm value để xác định các cột bạn muốn xem.

 
df.pivot_table(index = ["Region", "Category", "Sub-Category"], values = "Sales")

Trong kết quả cuối cùng, sẽ có ba cột index và các giá trị trung bình của cột Sales (Doanh số) được so sánh với từng phần tử.

Giao diện Jupyter Notebook hiển thị mã Python

Xác định các hàm tổng hợp trong Pivot Table

Điều gì xảy ra khi bạn không muốn tính giá trị trung bình như mặc định? Pivot table có rất nhiều chức năng ngoài việc tính toán giá trị trung bình đơn giản.

Đây là cách viết code:

df.pivot_table(index = ["Category"], values = "Sales", aggfunc = [sum, max, min, len])

Trong đó:

  • sum: Tính tổng các giá trị
  • max: Tính giá trị lớn nhất
  • min: Tính giá trị nhỏ nhất
  • len: Tính số lượng giá trị
Giao diện Jupyter Notebook hiển thị mã Python

Bạn cũng có thể xác định từng chức năng này trong các dòng mã riêng biệt.

Cách thêm Tổng số (grand total) vào pivot table

Không có nội dung dữ liệu nào hoàn chỉnh nếu không có tổng số (grand total). Để tính toán và hiển thị tổng cộng trên mỗi cột dữ liệu, hãy sử dụng hàm margins và margins_name.

df.pivot_table(index = ["Category"], values = "Sales", aggfunc = [sum, max, min, len], margins=True, margins_name='Grand Totals')

Trong đó:

  • margins: Hàm tính tổng lớn
  • margins_name: Chỉ định tên của danh mục trong cột index (ví dụ: Tổng số lớn)

Sửa đổi và sử dụng code:

Đây là đoạn mã cuối cùng:

import pandas as pd

# replace with your own path here 
path = "C://Users//user/OneDrive//Desktop//" 

# you can define the filename here
file = "Sample - Superstore.xls" 

df = pd.read_excel(path + file) 

df.pivot_table(index = ["Region", "Category", "Sub-Category"], values = "Sales", 
              aggfunc = [sum, max, min, len], 
              margins=True, 
              margins_name='Grand Totals')
 

Tạo pivot table trong Python

Khi bạn đang sử dụng pivot table, khả năng là vô tận. Python cho phép bạn dễ dàng xử lý các mảng dữ liệu lớn mà không phải lo lắng về sự khác biệt dữ liệu và độ trễ của hệ thống.

Tìm hiểu các khóa học lập trình của FUNiX tại đây:

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/learn-how-to-create-excel-pivot-tables-in-python/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!