Hướng dẫn chi tiết – cầm tay chỉ việc – dành cho dân văn phòng, kế toán, HR, analyst muốn tự động hóa quy trình vẽ chart

1. Tại Sao Nên Tạo Biểu Đồ Excel Bằng Python?
Trong công việc văn phòng, biểu đồ giúp bạn:
- Trình bày dữ liệu đẹp và dễ hiểu
- Phân tích xu hướng nhanh chóng
- Làm báo cáo tuần/tháng/năm chuyên nghiệp
Nhưng… vẽ chart bằng tay mỗi lần rất tốn thời gian: phải chọn range, chỉnh màu, đổi tên series, đặt nhãn…
Python giải quyết vấn đề này:
- Tự động tạo biểu đồ chỉ với 1 lệnh
- Tự chọn vùng dữ liệu
- Áp dụng format, màu sắc, kiểu biểu đồ đồng nhất
- Tự tạo file Excel kèm chart → CHẠY LẠI BẤT CỨ LÚC NÀO
Đúng nghĩa “bấm 1 cái – có chart đẹp ngay”.
2. Chuẩn Bị Môi Trường
Bạn cần các thư viện:
pip install openpyxl pandas matplotlib
- pandas → xử lý dữ liệu
- openpyxl → ghi Excel & vẽ chart
- matplotlib → tạo hình ảnh biểu đồ nếu bạn muốn chèn vào Excel
3. Dữ Liệu Mẫu Sử Dụng
Giả sử bạn có file:
DoanhThu_Thang.xlsx
| Tháng | DoanhThu |
|---|---|
| 1 | 120000000 |
| 2 | 150000000 |
| 3 | 180000000 |
| 4 | 220000000 |
4. Tạo Biểu Đồ Excel Bằng Python (Cầm Tay Chỉ Việc)
Bước 1 – Đọc dữ liệu từ Excel
import pandas as pd
df = pd.read_excel("DoanhThu_Thang.xlsx")
print(df)
Giải thích:
pandas đọc file → trả về DataFrame có 2 cột Tháng và DoanhThu.
Bước 2 – Ghi bảng dữ liệu sang file Excel mới
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "Data"
# Ghi header
ws.append(list(df.columns))
# Ghi từng dòng dữ liệu
for row in df.values:
ws.append(list(row))
Bước 3 – Tạo biểu đồ cột (Column Chart)
from openpyxl.chart import BarChart, Reference
chart = BarChart()
chart.title = "Biểu đồ doanh thu theo tháng"
chart.x_axis.title = "Tháng"
chart.y_axis.title = "Doanh thu (VND)"
# Vùng nhãn & vùng giá trị
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
data = Reference(ws, min_col=2, min_row=1, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
# Chèn biểu đồ vào vị trí E2
ws.add_chart(chart, "E2")
Giải thích từng dòng:
BarChart()→ tạo chart dạng cộtReference()→ chọn vùng dữ liệutitles_from_data=True→ dùng dòng 1 làm tên Seriesws.add_chart()→ gắn chart vào sheet
Bước 4 – Lưu file
wb.save("DoanhThu_Chart.xlsx")
Kết quả:
File Excel chứa bảng dữ liệu + biểu đồ tự động, format chuẩn, không lo sai sót.
5. Tạo Biểu Đồ Đường (Line Chart)
Chỉ cần đổi BarChart() thành LineChart():
from openpyxl.chart import LineChart
line_chart = LineChart()
line_chart.title = "Xu hướng doanh thu"
line_chart.x_axis.title = "Tháng"
line_chart.y_axis.title = "Doanh thu"
line_chart.add_data(data, titles_from_data=True)
line_chart.set_categories(cats)
ws.add_chart(line_chart, "E18")
6. Tạo Biểu Đồ Matplotlib và Chèn Vào Excel (Pro hơn)
Dùng khi bạn muốn style đẹp như Power BI.
Bước 1 – Tạo hình bằng matplotlib
import matplotlib.pyplot as plt
plt.figure(figsize=(6,4))
plt.plot(df['Tháng'], df['DoanhThu'], marker='o')
plt.title("Doanh thu theo tháng")
plt.xlabel("Tháng")
plt.ylabel("Doanh thu")
plt.grid(True)
plt.savefig("chart.png")
plt.close()
Bước 2 – Chèn hình vào Excel
from openpyxl.drawing.image import Image
img = Image("chart.png")
ws.add_image(img, "H2")
7. Mẫu Script Tự Động Hoàn Chỉnh (Copy-Paste Là Chạy)
import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
from openpyxl.drawing.image import Image
import matplotlib.pyplot as plt
df = pd.read_excel("DoanhThu_Thang.xlsx")
# Tạo Excel
wb = Workbook()
ws = wb.active
ws.title = "Data"
ws.append(list(df.columns))
for row in df.values:
ws.append(list(row))
# Tạo biểu đồ cột
chart = BarChart()
chart.title = "Doanh thu theo tháng"
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
data = Reference(ws, min_col=2, min_row=1, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
ws.add_chart(chart, "E2")
# Tạo biểu đồ matplotlib
plt.figure(figsize=(6,4))
plt.plot(df['Tháng'], df['DoanhThu'], marker='o')
plt.title("Doanh thu theo tháng")
plt.xlabel("Tháng")
plt.ylabel("Doanh thu")
plt.grid(True)
plt.savefig("chart.png")
plt.close()
# Chèn hình
ws.add_image(Image("chart.png"), "H2")
wb.save("DoanhThu_Chart.xlsx")
8. Ứng Dụng Thực Tế Cho Dân Văn Phòng
✔ Kế toán
- Vẽ biểu đồ doanh thu – chi phí
- Tự động hóa báo cáo tháng/quý/năm
✔ HR
- Biểu đồ headcount
- Biểu đồ attrition rate theo tháng
✔ Sale – Marketing
- Chart KPI doanh số
- Chart tăng trưởng khách hàng
✔ Quản lý dự án
- Chart tiến độ
- Burn-down chart
Code tham khảo thêm:
import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import BarChart, LineChart, Reference
from openpyxl.utils.dataframe import dataframe_to_rows
# ===============================
# BƯỚC 1: ĐỌC FILE DỮ LIỆU GỐC
# ===============================
# Đảm bảo file DoanhThu_30k.xlsx nằm cùng thư mục với file .py này
input_file = “DoanhThu_30k.xlsx”
print(“Đang đọc dữ liệu từ:”, input_file)
df = pd.read_excel(input_file)
# Kiểm tra nhanh vài dòng
print(df.head())
# ======================================
# BƯỚC 2: TỔNG HỢP DỮ LIỆU CHO BIỂU ĐỒ
# ======================================
# 1) Doanh thu ròng theo Tháng
df_thang = (
df.groupby(“Thang”, as_index=False)[“DoanhThuRong”]
.sum()
.sort_values(“Thang”)
)
# 2) Doanh thu ròng theo Khu Vực
df_khuvuc = (
df.groupby(“KhuVuc”, as_index=False)[“DoanhThuRong”]
.sum()
.sort_values(“KhuVuc”)
)
# 3) Doanh thu ròng theo Chi Nhánh
df_chinhanh = (
df.groupby(“MaChiNhanh”, as_index=False)[“DoanhThuRong”]
.sum()
.sort_values(“MaChiNhanh”)
)
print(“Tổng hợp xong dữ liệu cho biểu đồ.”)
# =======================================
# BƯỚC 3: TẠO FILE EXCEL BÁO CÁO MỚI
# =======================================
wb = Workbook()
# — Sheet 1: Theo tháng —
ws_thang = wb.active
ws_thang.title = “TheoThang”
ws_thang.append([“Thang”, “DoanhThuRong”])
for r in dataframe_to_rows(df_thang, index=False, header=False):
ws_thang.append(r)
# — Sheet 2: Theo khu vực —
ws_khuvuc = wb.create_sheet(“TheoKhuVuc”)
ws_khuvuc.append([“KhuVuc”, “DoanhThuRong”])
for r in dataframe_to_rows(df_khuvuc, index=False, header=False):
ws_khuvuc.append(r)
# — Sheet 3: Theo chi nhánh —
ws_cn = wb.create_sheet(“TheoChiNhanh”)
ws_cn.append([“MaChiNhanh”, “DoanhThuRong”])
for r in dataframe_to_rows(df_chinhanh, index=False, header=False):
ws_cn.append(r)
print(“Đã ghi dữ liệu tổng hợp vào file Excel.”)
# =======================================
# BƯỚC 4: TẠO BIỂU ĐỒ TRONG EXCEL
# =======================================
# ———- Biểu đồ 1: LineChart theo Tháng ———-
line_chart = LineChart()
line_chart.title = “Doanh thu ròng theo tháng”
line_chart.x_axis.title = “Tháng”
line_chart.y_axis.title = “Doanh thu ròng”
# Chọn vùng dữ liệu cho biểu đồ
# Cột 1: Tháng (nhãn trục X)
# Cột 2: DoanhThuRong (giá trị)
cats_thang = Reference(ws_thang, min_col=1, min_row=2, max_row=ws_thang.max_row)
data_thang = Reference(ws_thang, min_col=2, min_row=1, max_row=ws_thang.max_row)
line_chart.add_data(data_thang, titles_from_data=True)
line_chart.set_categories(cats_thang)
# Chèn biểu đồ vào sheet TheoThang tại ô E2
ws_thang.add_chart(line_chart, “E2”)
# ———- Biểu đồ 2: BarChart theo Khu Vực ———-
bar_kv = BarChart()
bar_kv.title = “Doanh thu ròng theo khu vực”
bar_kv.x_axis.title = “Khu vực”
bar_kv.y_axis.title = “Doanh thu ròng”
cats_kv = Reference(ws_khuvuc, min_col=1, min_row=2, max_row=ws_khuvuc.max_row)
data_kv = Reference(ws_khuvuc, min_col=2, min_row=1, max_row=ws_khuvuc.max_row)
bar_kv.add_data(data_kv, titles_from_data=True)
bar_kv.set_categories(cats_kv)
ws_khuvuc.add_chart(bar_kv, “E2”)
# ———- Biểu đồ 3: BarChart theo Chi Nhánh ———-
bar_cn = BarChart()
bar_cn.title = “Doanh thu ròng theo chi nhánh”
bar_cn.x_axis.title = “Chi nhánh”
bar_cn.y_axis.title = “Doanh thu ròng”
cats_cn = Reference(ws_cn, min_col=1, min_row=2, max_row=ws_cn.max_row)
data_cn = Reference(ws_cn, min_col=2, min_row=1, max_row=ws_cn.max_row)
bar_cn.add_data(data_cn, titles_from_data=True)
bar_cn.set_categories(cats_cn)
ws_cn.add_chart(bar_cn, “E2”)
# =======================================
# BƯỚC 5: LƯU FILE KẾT QUẢ
# =======================================
output_file = “BaoCao_DoanhThu_Chart.xlsx”
wb.save(output_file)
print(“Đã tạo xong file báo cáo:”, output_file)
Sau khi chạy xong sẽ có file:
✅ BaoCao_DoanhThu_Chart.xlsx
Mở file này lên, bạn sẽ thấy:
Sheet TheoThang: bảng + biểu đồ đường
Sheet TheoKhuVuc: bảng + biểu đồ cột
Sheet TheoChiNhanh: bảng + biểu đồ cột
9. Kết Luận: Bạn Nên Dùng Python Tạo Chart Nếu…
- Bạn muốn báo cáo đẹp và tự động
- Dữ liệu thay đổi liên tục
- Bạn muốn tăng tốc công việc và giảm sai sót
- Bạn thích quy trình “1 nút chạy → ra file hoàn chỉnh”