Excel là công cụ đầu choice cho nhiều nhà phân tích dữ liệu vì sự đơn giản và linh hoạt. Nhưng đối với các tác vụ dữ liệu lớn, lặp lại hoặc phức tạp, Python cung cấp tốc độ, tự động hóa và phân tích nâng cao. Bằng cách tích hợp Excel với Python, bạn có thể tận dụng بهترین của cả hai thế giới.
Trong hướng dẫn này, chúng tôi sẽ chỉ cách kết hợp Excel với Python cho quy trình làm việc data science mạnh mẽ.
Công Cụ & Thiết Lập Yêu Cầu
Trước khi kết hợp Excel với Python, hãy thiết lập môi trường. Điều này đảm bảo quy trình làm việc của bạn suôn sẻ và hiệu quả ngay từ bước đầu tiên.
Điều Kiện Tiên Quyết:
- Microsoft Excel: Cho xem xét dữ liệu ban đầu và báo cáo.
- Python 3.x: Động cơ cho quy trình data science của bạn.
- Thư Viện Python:
- pandas cho phân tích dữ liệu.
- matplotlib cho vẽ biểu đồ.
- openpyxl (tùy chọn, để ghi tệp Excel).
- numpy (tính toán số).
- matplotlib/seaborn cho hình ảnh hóa.
Cài Đặt Thư Viện Python:
pip install pandas matplotlib openpyxl
1. Đọc Dữ Liệu Vào Python
Bạn có thể tải dữ liệu vào Python bằng pandas, giúp dễ dàng thao tác và phân tích dữ liệu dạng bảng.
import pandas as pd
# Đọc dữ liệu từ tệp Excel
df = pd.read_excel('SalesData.xlsx')
# Xem trước dữ liệu
print(df.head())
# Hiển thị 5 hàng đầu tiên của dữ liệu
print(df.info())
# Hiển thị thông tin về cột, kiểu dữ liệu và giá trị thiếu
- pd.read_csv() đọc tệp Excel vào pandas DataFrame.
- df.head() hiển thị năm hàng đầu, tuyệt vời để kiểm tra nhanh.
- df.info() hiển thị số hàng, cột và kiểu dữ liệu.
Bạn sẽ thấy những hàng đầu tiên của dữ liệu bán hàng, cùng với tóm tắt như:
TransactionID Date CustomerID ProductID ProductName Category Quantity UnitPrice Region Channel SalesRep 0 100001 2024-01-02 C-100 P-101 Laptop Electronics 2.0 800.0 East Online Smith 1 100002 2024-01-02 C-101 P-102 Printer Electronics 1.0 200.0 West Retail Johnson 2 100003 2024-01-03 C-102 P-103 Mouse Electronics 5.0 25.0 North Online Lee 3 100004 2024-01-04 C-103 P-104 Desk Furniture 1.0 150.0 South Retail Brown 4 100005 2024-01-05 C-104 P-105 Monitor Electronics 3.0 175.0 NaN Online DavisRangeIndex: 63 entries, 0 to 62 Data columns (total 11 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 TransactionID 63 non-null int64 1 Date 62 non-null datetime64[ns] 2 CustomerID 62 non-null object 3 ProductID 61 non-null object 4 ProductName 63 non-null object 5 Category 61 non-null object 6 Quantity 61 non-null float64 7 UnitPrice 62 non-null float64 8 Region 62 non-null object 9 Channel 62 non-null object 10 SalesRep 62 non-null object dtypes: datetime64[ns](1), float64(2), int64(1), object(7) memory usage: 5.5+ KB None
2. Làm Sạch & Biến Đổi Dữ Liệu
Dữ liệu thô hiếm khi sẵn sàng cho phân tích. Ở bước này, bạn sẽ sửa giá trị thiếu, chuyển cột sang kiểu đúng và thêm trường tính toán mới.
Xóa Trùng Lặp:
# Remove Duplicates df = df.drop_duplicates()
- Loại bỏ giá trị trùng lặp.
Kiểm Tra Giá Trị Thiếu:
# In số lượng giá trị thiếu mỗi cột print(df.isnull().sum())
- Nó cho thấy bao nhiêu giá trị thiếu (NaN) trong mỗi cột. Nếu tìm thấy, bạn có thể quyết định loại bỏ hoặc điền.
#Output: TransactionID 0 Date 1 CustomerID 1 ProductID 2 ProductName 0 Category 2 Quantity 2 UnitPrice 1 Region 1 Channel 1 SalesRep 1 dtype: int64
Chuyển Đổi Kiểu Dữ Liệu:
# Chuyển cột 'Date' sang kiểu datetime pandas để lọc/nhóm dễ dàng hơn df['Date'] = pd.to_datetime(df['Date'])
- Nó chuyển cột Date từ văn bản sang định dạng datetime pandas để lọc và nhóm dễ dàng hơn.
Tạo Cột 'TotalSales':
# Thêm cột mới: tổng giá trị cho mỗi giao dịch df['TotalSales'] = df['Quantity'] * df['UnitPrice']
- Thêm cột mới hiển thị tổng giá trị cho mỗi giao dịch.
Trích Xuất Tháng Cho Phân Tích Chuỗi Thời Gian:
df['Month'] = df['Date'].dt.to_period('M')
- Điều này tạo cột Month để nhóm và phân tích bán hàng theo tháng.
- Bây giờ dùng print(df.head()) để xem trước dữ liệu đã làm sạch.
#Ouput: TransactionID Date CustomerID ProductID ProductName Category ... UnitPrice Region Channel SalesRep TotalSales Month 0 100001 2024-01-02 C-100 P-101 Laptop Electronics ... 800.0 East Online Smith 1600.0 2024-01 1 100002 2024-01-02 C-101 P-102 Printer Electronics ... 200.0 West Retail Johnson 200.0 2024-01 2 100003 2024-01-03 C-102 P-103 Mouse Electronics ... 25.0 North Online Lee 125.0 2024-01 3 100004 2024-01-04 C-103 P-104 Desk Furniture ... 150.0 South Retail Brown 150.0 2024-01 4 100005 2024-01-05 C-104 P-105 Monitor Electronics ... 175.0 NaN Online Davis 525.0 2024-01
3. Phân Tích Dữ Liệu Của Bạn
Với tập dữ liệu sạch, bạn hiện có thể tạo ra thông tin chi tiết tạo giá trị kinh doanh. Bao gồm tổng hợp bán hàng theo tháng, sản phẩm và khu vực.
Tổng Bán Hàng Theo Tháng:
# Nhóm theo tháng và cộng tổng total sales cho mỗi tháng
monthly_sales = df.groupby('Month')['TotalSales'].sum()
print(monthly_sales)
- Nhóm dữ liệu theo Tháng và cộng tổng TotalSales cho mỗi tháng.
#Output: Month 2024-01 9075.0 2024-02 9800.0 2024-03 9075.0 Freq: M, Name: TotalSales, dtype: float64
Sản Phẩm Bán Chạy Nhất:
# Nhóm theo sản phẩm, cộng tổng total sales và sắp xếp từ cao xuống thấp
product_sales = df.groupby('ProductName')['TotalSales'].sum().sort_values(ascending=False)
print(product_sales)
- Tổng hợp bán hàng theo sản phẩm, sau đó sắp xếp từ phổ biến nhất đến ít phổ biến nhất.
#Output: ProductName Laptop 15200.0 Monitor 3850.0 Printer 3200.0 Desk 2550.0 Chair 2325.0 Mouse 1125.0 Name: TotalSales, dtype: float64
Bán Hàng Theo Khu Vực:
# Nhóm theo khu vực và cộng tổng total sales mỗi khu vực
region_sales = df.groupby('Region')['TotalSales'].sum()
print(region_sales)
- Tổng hợp tổng bán hàng theo từng khu vực.
#Output: Region East 6075.0 North 5925.0 South 8225.0 West 7500.0
4. Hình Ảnh Hóa Thông Tin Chi Tiết Quan Trọng
Dữ liệu mạnh mẽ hơn khi được hình ảnh hóa. Hãy tạo biểu đồ nhanh để giúp bạn và các bên liên quan nắm bắt xu hướng chính chỉ trong nháy mắt.
4.1. Xu Hướng Bán Hàng Hàng Tháng
import matplotlib.pyplot as plt
# Import để vẽ biểu đồ
# Tạo biểu đồ cột bán hàng theo tháng
monthly_sales.plot(
kind='bar',
title='Total Sales by Month',
ylabel='Sales ($)',
xlabel='Month'
)
plt.tight_layout()
# Tránh chồng chéo nhãn
plt.savefig('monthly_sales.png')
# Lưu hình ảnh dưới dạng tệp PNG
plt.show()
# Hiển thị biểu đồ
- Vẽ biểu đồ cột bán hàng hàng tháng.
- plt.savefig lưu biểu đồ cho báo cáo.
- Một biểu đồ cột sẽ hiển thị thay đổi bán hàng mỗi tháng.

4.2. Bán Hàng Theo Khu Vực
# Biểu đồ tròn bán hàng theo khu vực
region_sales.plot(
kind='pie',
autopct='%1.1f%%',
title='Sales Distribution by Region'
)
plt.ylabel('')
# Xóa nhãn y mặc định
plt.tight_layout()
plt.savefig('region_sales.png')
plt.show()
- Biểu đồ tròn bán hàng theo khu vực, tuyệt vời cho quản lý hoặc marketing.

5. Phân Tích & Mô Hình Hóa Nâng Cao
Bên cạnh nhóm và tóm tắt cơ bản, Python cho phép phân tích thống kê nâng cao, bảng trục xoay và thậm chí machine learning, tất cả chỉ với vài dòng mã. Hãy đào sâu hơn vào dữ liệu để mở khóa thêm thông tin chi tiết.
5.1. Thống Kê Mô Tả
Thống kê mô tả cho bạn tóm tắt nhanh của tập dữ liệu, hiển thị trung bình, độ lệch chuẩn và phân vị cho các cột số.
# Hiển thị thống kê tóm tắt cho các cột số (mean, std, min, max, quartiles, etc.) print(df.describe())
- df.describe() nhanh chóng tóm tắt tất cả các cột số (như Quantity, UnitPrice, TotalSales).
#Output: TransactionID Quantity UnitPrice TotalSales count 61.000000 59.000000 60.000000 59.000000 mean 100030.180328 2.542373 262.083333 478.813559 std 17.497150 1.534905 277.339497 527.085627 min 100001.000000 1.000000 25.000000 75.000000 25% 100015.000000 1.000000 75.000000 162.500000 50% 100030.000000 2.000000 175.000000 300.000000 75% 100045.000000 3.000000 200.000000 525.000000 max 100060.000000 7.000000 800.000000 2400.000000
5.2. Bảng Trục Xoay Trong Pandas
Bảng trục xoay mạnh mẽ cho báo cáo tương tác trong Excel, và pandas cũng làm được.
# Tạo bảng trục xoay: tổng TotalSales cho mỗi Region pivot = df.pivot_table(index='Region', values='TotalSales', aggfunc='sum') print(pivot)
- pivot_table() tóm tắt TotalSales cho mỗi khu vực, tương tự Pivot Table của Excel.
#Output TotalSales Region East 6075.0 North 5925.0 South 8225.0 West 7500.0
5.3. Ví Dụ Machine Learning Đơn Giản
Hãy xem liệu chúng ta có thể dự đoán tổng bán hàng chỉ từ số lượng bán bằng mô hình hồi quy tuyến tính đơn giản (machine learning).
from sklearn.linear_model import LinearRegression
# Import linear regression từ scikit-learn
# Chuẩn bị đặc trưng và biến mục tiêu
X = df[['Quantity']]
# Đặc trưng: Số lượng bán
y = df['TotalSales']
# Mục tiêu: Giá trị tổng bán hàng
# Tạo và fit mô hình hồi quy
model = LinearRegression()
model.fit(X, y)
# In hệ số hồi quy (độ dốc)
print('Coefficient:', model.coef_)
# In hệ số chặn (giá trị cơ sở khi Quantity=0)
print('Intercept:', model.intercept_)
- Nhập LinearRegression từ scikit-learn.
- Dùng Quantity để dự đoán TotalSales.
- Fit mô hình và in hệ số (bán hàng tăng bao nhiêu cho mỗi đơn vị thêm bán).
#Output: Coefficient: [-37.65294772] Intercept: 596.8483500185391
6. Xuất Dữ Liệu Đã Làm Sạch/Phân Tích Quay Lại Excel
Sau khi làm sạch, phân tích và mô hình hóa dữ liệu, bạn có thể xuất các bảng tóm tắt và thông tin chi tiết ra tệp Excel đa sheet. Điều này giữ tất cả phát hiện chính của bạn cùng nhau và sẵn sàng xem xét trong Excel.
# Xuất bảng tóm tắt và phân tích nâng cao vào tệp Excel đa sheet
with pd.ExcelWriter('sales_summary.xlsx') as writer:
# Tóm tắt hàng tháng
monthly_sales.to_frame().to_excel(writer, sheet_name='Monthly Sales')
# Tóm tắt sản phẩm
product_sales.to_frame().to_excel(writer, sheet_name='Product Sales')
# Tóm tắt khu vực
region_sales.to_frame().to_excel(writer, sheet_name='Region Sales')
# Bảng trục xoay (tổng bán hàng theo khu vực)
pivot.to_excel(writer, sheet_name='Pivot Table')
# Tùy chọn, bạn có thể xuất thống kê mô tả
df.describe().to_excel(writer, sheet_name='Descriptive Stats')
- Context Manager (with … as writer): Đảm bảo tệp Excel được lưu và đóng đúng cách sau khi ghi.
- .to_excel() Cho Mỗi Bảng: Lưu mỗi DataFrame hoặc tóm tắt vào sheet riêng để truy cập dễ dàng.
- Tên Sheet Tùy Chỉnh: Mỗi sheet được đặt tên để rõ ràng, khớp với các bước phân tích của bạn.

- Mở sales_summary.xlsx trong Excel.
- Bạn sẽ thấy các sheet riêng cho Monthly Sales, Product Sales, Region Sales, Pivot Table và Descriptive Statistics.

7. Tự Động Hóa & Mở Rộng Quy Trình Làm Việc Của Bạn
Bằng cách sử dụng Python, bạn có thể tự động hóa báo cáo hoặc phân tích định kỳ. Lần tới khi bạn nhận tệp Excel mới, chỉ cần thay thế tệp và chạy lại script; tất cả phân tích và báo cáo được làm mới ngay lập tức.
- Giữ tất cả mã phân tích trong một tệp Python.
- Để cập nhật báo cáo, thay thế CSV và chạy:
python Excel_to_Python.py

- Để mạnh mẽ hơn, bạn có thể lên lịch điều này thành tác vụ hàng tuần/hàng tháng.
Kết Luận
Bằng cách kết hợp nhập dữ liệu và báo cáo trực quan của Excel với sức mạnh data science của Python, bạn có thể xử lý và phân tích tập dữ liệu lớn, rối rắm hiệu quả. Nó tự động hóa các tác vụ báo cáo lặp lại. Mở khóa machine learning và hình ảnh hóa nâng cao. Bạn không cần thành chuyên gia Python ngay lập tức. Bắt đầu với một tác vụ đơn giản; khi đó hoạt động, thêm một bước nữa. Trước khi bạn hay, bạn sẽ tự động hóa các báo cáo phức tạp.
Nhận Bài Tập Excel Nâng Cao Miễn Phí Kèm Giải Pháp!