Bạn đang mệt mỏi với việc phải làm các báo cáo thống kê thủ công hàng tháng trong Excel? Bạn muốn có cái nhìn tổng quan về tình hình kinh doanh chỉ trong vài giây? Nếu câu trả lời là “Có”, thì bài viết này chính là dành cho bạn. Chúng ta sẽ cùng nhau khám phá cách sử dụng thư viện Pandas mạnh mẽ của Python để tự động hóa các tác vụ thống kê dữ liệu từ file Excel, giúp bạn tiết kiệm thời gian và giảm thiểu sai sót.
Bạn không cần phải là một lập trình viên chuyên nghiệp. Chỉ cần làm theo các bước dưới đây, bạn sẽ thấy việc phân tích dữ liệu trở nên đơn giản và thú vị hơn bao giờ hết.

Bước 1: Chuẩn bị môi trường
Để bắt đầu, bạn cần cài đặt Python và thư viện Pandas. Nếu bạn chưa có, hãy mở Command Prompt (trên Windows) hoặc Terminal (trên macOS) và gõ lệnh sau:
Bash
pip install pandas openpyxl
openpyxl là thư viện giúp Pandas đọc và ghi file Excel, vì vậy việc cài đặt nó là cần thiết.
Bước 2: Dữ liệu mẫu
Chúng ta sẽ sử dụng file Excel mẫu SalesData.xlsx với dữ liệu cơ bản như sau. Bạn có thể tự tạo file này trong Excel hoặc tải xuống.
Bảng dữ liệu mẫu SalesData.xlsx:
| Order ID | Product | Quantity | Sales | Region | Order Date |
| 1001 | Laptop | 1 | 1500 | East | 2024-01-05 |
| 1002 | Mouse | 5 | 50 | West | 2024-01-06 |
| 1003 | Laptop | 2 | 3000 | West | 2024-01-10 |
| 1004 | Keyboard | 3 | 150 | East | 2024-02-01 |
| 1005 | Monitor | 1 | 250 | Central | 2024-02-05 |
| 1006 | Mouse | 2 | 20 | East | 2024-02-15 |
| 1007 | Laptop | 1 | 1500 | West | 2024-03-01 |
| 1008 | Keyboard | 5 | 250 | Central | 2024-03-10 |
| 1009 | Monitor | 2 | 500 | East | 2024-03-15 |
| 1010 | Laptop | 1 | 1500 | West | 2024-03-20 |
Hãy lưu file này vào cùng thư mục với file Python (.py) bạn sắp tạo.
Bước 3: Đọc file và xuất kết quả vào sheet mới
Thay vì in ra màn hình, chúng ta sẽ tạo một đối tượng ExcelWriter để ghi các kết quả thống kê vào các sheet riêng biệt. Điều này giúp bạn có một file báo cáo hoàn chỉnh ngay sau khi chạy code.
Python
import pandas as pd
# Đường dẫn file đầu vào và đầu ra
input_file = 'SalesData.xlsx'
output_file = 'Sales_Report_Pandas.xlsx'
try:
# Đọc file Excel vào DataFrame
df = pd.read_excel(input_file)
# Tạo đối tượng ExcelWriter để ghi nhiều sheet
with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
# Ghi bảng dữ liệu gốc vào sheet 'Raw Data'
df.to_excel(writer, sheet_name='Raw Data', index=False)
# --- Các ví dụ thống kê dữ liệu ---
# 1. Tổng doanh thu theo sản phẩm
doanh_thu_theo_san_pham = df.groupby('Product')['Sales'].sum().sort_values(ascending=False).reset_index()
doanh_thu_theo_san_pham.rename(columns={'Sales': 'Total Sales'}, inplace=True)
doanh_thu_theo_san_pham.to_excel(writer, sheet_name='Sales by Product', index=False)
# 2. Số lượng đơn hàng theo khu vực
so_luong_don_hang_theo_khu_vuc = df.groupby('Region').size().reset_index(name='Number of Orders')
so_luong_don_hang_theo_khu_vuc.to_excel(writer, sheet_name='Orders by Region', index=False)
# 3. Doanh thu trung bình mỗi đơn hàng
doanh_thu_trung_binh = df['Sales'].mean()
df_doanh_thu_tb = pd.DataFrame([{'Average Sales': doanh_thu_trung_binh}])
df_doanh_thu_tb.to_excel(writer, sheet_name='Average Sales', index=False)
# 4. Thống kê doanh thu theo tháng
df['Order Date'] = pd.to_datetime(df['Order Date'])
df['Month'] = df['Order Date'].dt.month
doanh_thu_theo_thang = df.groupby('Month')['Sales'].sum().reset_index()
doanh_thu_theo_thang.to_excel(writer, sheet_name='Sales by Month', index=False)
# 5. Kết hợp nhiều phép tính trên một nhóm
thong_ke_theo_thang_da_hop = df.groupby('Month').agg(
Total_Sales=('Sales', 'sum'),
Number_of_Orders=('Sales', 'count')
).reset_index()
thong_ke_theo_thang_da_hop.to_excel(writer, sheet_name='Monthly Summary', index=False)
print(f"✅ Đã tạo file báo cáo thành công tại: {output_file}")
print("Vui lòng mở file để xem các kết quả ở các sheet khác nhau.")
except FileNotFoundError:
print(f"❌ Lỗi: Không tìm thấy file {input_file}. Vui lòng kiểm tra lại tên file và đường dẫn.")
except Exception as e:
print(f"❌ Lỗi xảy ra: {e}")
Mã này làm gì?
pd.ExcelWriter(...): Tạo một đối tượng đặc biệt cho phép bạn ghi nhiều DataFrame vào các sheet khác nhau trong cùng một file....to_excel(writer, sheet_name='...'): Thay vìprint(), chúng ta sử dụng.to_excel()để ghi từng DataFrame kết quả vào một sheet mới với tên cụ thể. Tham sốindex=Falseđể không ghi chỉ số của DataFrame vào Excel.
Với đoạn mã hoàn chỉnh này, bạn chỉ cần chạy một lần duy nhất và sẽ có ngay một file báo cáo Sales_Report_Pandas.xlsx với các sheet chứa đầy đủ các bảng thống kê đã được tạo tự động.
Hãy thử áp dụng cách làm này cho các báo cáo công việc của bạn nhé!