Chào mọi người,
Dạo gần đây mình có làm việc nhiều với Python để tự động hóa các tác vụ Excel, và mình nhận thấy việc tạo biểu đồ cũng có thể làm rất hiệu quả bằng code. Hôm nay mình muốn chia sẻ với mọi người một cách đơn giản để tự động hóa việc tạo biểu đồ trong Excel bằng thư viện Matplotlib của Python.
Thông thường, khi cần tạo biểu đồ từ dữ liệu Excel, chúng ta sẽ phải mở file, chọn dữ liệu, rồi vào Insert để chọn loại biểu đồ mong muốn. Với các file có cấu trúc dữ liệu giống nhau và cần tạo nhiều biểu đồ tương tự, việc này khá tốn thời gian. Sử dụng Python, chúng ta có thể giải quyết vấn đề này.
Cách thực hiện:
- Đầu tiên, bạn cần cài đặt các thư viện cần thiết:
pandasđể đọc file Excel vàmatplotlibđể vẽ biểu đồ. Nếu chưa có, bạn có thể cài đặt bằng pip:
pip install pandas matplotlib openpyxl- Tiếp theo, sử dụng Pandas để đọc dữ liệu từ file Excel của bạn.
- Sau đó, dùng Matplotlib để tạo các loại biểu đồ bạn cần (ví dụ: biểu đồ cột, biểu đồ đường, biểu đồ tròn...).
- Cuối cùng, bạn có thể lưu biểu đồ này thành file ảnh (PNG, JPG...) hoặc sử dụng các thư viện khác để chèn trực tiếp biểu đồ vào một file Excel mới hoặc file Excel có sẵn.
Ví dụ đơn giản để vẽ biểu đồ cột từ dữ liệu Excel:
import pandas as pd
import matplotlib.pyplot as plt
# Đọc dữ liệu từ file Excel
df = pd.read_excel('du_lieu_cua_ban.xlsx')
# Giả sử bạn có cột 'Thang' và cột 'DoanhThu'
plt.figure(figsize=(10, 6))
plt.bar(df['Thang'], df['DoanhThu'])
plt.xlabel('Tháng')
plt.ylabel('Doanh Thu')
plt.title('Biểu đồ doanh thu hàng tháng')
plt.xticks(rotation=45)
plt.tight_layout()
# Lưu biểu đồ thành file ảnh
plt.savefig('bieu_do_doanh_thu.png')
# Nếu muốn chèn vào file Excel khác (cần thêm thư viện xlwings hoặc openpyxl)
# Ví dụ với xlwings:
# import xlwings as xw
# wb = xw.Book('file_excel_moi.xlsx')
# sheet = wb.sheets['Sheet1']
# sheet.pictures.add(plt.gcf(), name='BieuDoDoanhThu', left=100, top=50)
# wb.save()
# wb.close()
print("Đã tạo và lưu biểu đồ thành công!")Cách này rất hữu ích khi bạn cần cập nhật biểu đồ thường xuyên với dữ liệu mới mà không cần thao tác thủ công. Hy vọng chia sẻ này giúp ích cho mọi người!