Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Tự động hóa tạo biểu đồ Excel trực quan từ nhiều file nguồn bằng Python

Nghê Long Oanh 04/04/2026 20:29 491 lượt xem 2 trả lời

Chào mọi người,

Dạo gần đây mình có làm việc với một dự án cần tổng hợp dữ liệu từ nhiều file Excel khác nhau để tạo ra các biểu đồ trực quan. Thay vì làm thủ công từng file rồi copy-paste vào file báo cáo chính, mình đã tìm hiểu và áp dụng Python để tự động hóa quá trình này. Thấy khá hiệu quả nên mình muốn chia sẻ lại cho anh em trong diễn đàn tham khảo.

Vấn đề gặp phải:

  • Dữ liệu nằm rải rác ở nhiều file Excel (ví dụ: báo cáo bán hàng theo từng chi nhánh).
  • Số lượng file nguồn lớn, làm thủ công tốn rất nhiều thời gian và dễ sai sót.
  • Cần tạo ra các biểu đồ (cột, đường, tròn...) để dễ dàng theo dõi xu hướng.

Giải pháp với Python:

Mình sử dụng thư viện pandas để đọc dữ liệu từ các file Excel và matplotlib (hoặc seaborn) để vẽ biểu đồ.

Các bước cơ bản:

  1. Liệt kê các file Excel nguồn: Sử dụng module os để lấy danh sách tất cả các file Excel trong một thư mục chỉ định.
  2. Đọc và tổng hợp dữ liệu: Dùng vòng lặp và pd.read_excel() để đọc từng file, sau đó nối chúng lại thành một DataFrame duy nhất bằng pd.concat().
  3. Xử lý và chuẩn bị dữ liệu: Làm sạch dữ liệu, chuyển đổi kiểu dữ liệu nếu cần.
  4. Vẽ biểu đồ: Sử dụng các hàm của matplotlib.pyplot (ví dụ: plt.bar(), plt.plot(), plt.pie()) để tạo biểu đồ dựa trên DataFrame đã tổng hợp.
  5. Lưu biểu đồ: Dùng plt.savefig() để lưu biểu đồ dưới dạng file ảnh (PNG, JPG...).

Ví dụ code đơn giản (minh họa):

import pandas as pd
import matplotlib.pyplot as plt
import os

folder_path = 'duong_dan_den_thu_muc_chua_file_excel'
output_file = 'bao_cao_tong_hop.xlsx'
chart_file = 'bieu_do_ban_hang.png'

data_frames = []
for filename in os.listdir(folder_path):
    if filename.endswith('.xlsx'):
        file_path = os.path.join(folder_path, filename)
        df = pd.read_excel(file_path)
        data_frames.append(df)

combined_df = pd.concat(data_frames, ignore_index=True)

# Giả sử có cột 'DoanhThu' và 'ChiNhanh'
# Tính tổng doanh thu theo chi nhánh
summary_df = combined_df.groupby('ChiNhanh')['DoanhThu'].sum().reset_index()

# Vẽ biểu đồ cột
plt.figure(figsize=(10, 6))
plt.bar(summary_df['ChiNhanh'], summary_df['DoanhThu'])
plt.xlabel('Chi Nhánh')
plt.ylabel('Tổng Doanh Thu')
plt.title('Biểu đồ doanh thu theo chi nhánh')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig(chart_file)

# Lưu lại file tổng hợp (tùy chọn)
combined_df.to_excel(output_file, index=False)

print(f'Đã tạo báo cáo tổng hợp: {output_file}')
print(f'Đã lưu biểu đồ: {chart_file}')

Cách này giúp tiết kiệm rất nhiều thời gian, đảm bảo tính chính xác và dễ dàng cập nhật khi có thêm dữ liệu mới. Nếu anh em nào cần xử lý các tác vụ tương tự hoặc muốn đi sâu hơn vào các thư viện như openpyxl, xlsxwriter thì có thể trao đổi thêm.

Chúc mọi người áp dụng thành công!

4

Hay quá bạn ơi! Mình cũng đang vật lộn với việc tổng hợp dữ liệu từ hàng chục file báo cáo hàng ngày. Python để tự động hóa vụ này nghe rất hấp dẫn. Bạn có thể chia sẻ cụ thể hơn về các thư viện Python bạn dùng và cách bạn cấu trúc code không? Mình đặc biệt quan tâm đến phần tạo biểu đồ trực quan sau khi tổng hợp dữ liệu.

5

Hay quá bạn ơi! Mình cũng đang vật lộn với việc tổng hợp dữ liệu từ hàng chục file báo cáo hàng ngày. Python để tự động hóa vụ này nghe rất hấp dẫn.

Bạn có thể chia sẻ cụ thể hơn về các thư viện Python bạn dùng và cách bạn cấu trúc code không? Mình đặc biệt quan tâm đến phần tạo biểu đồ trực quan sau khi tổng hợp dữ liệu.

5

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký