Chào các anh em trong nhóm, hôm nay mình muốn chia sẻ một chút về kinh nghiệm cá nhân khi dùng Python để xử lý một lượng lớn file Excel. Dạo này công việc của mình liên quan nhiều đến việc tổng hợp dữ liệu từ các báo cáo hàng ngày, mà mỗi báo cáo lại nằm trong một file Excel riêng. Ban đầu cũng định dùng Power Query nhưng số lượng file quá lớn và cấu trúc file đôi khi có thay đổi nhỏ nên hơi vất vả.
Sau khi tìm hiểu, mình quyết định thử sức với Python và module pandas. Thực sự là một bước ngoặt lớn. Chỉ với vài dòng code đơn giản, mình đã có thể tự động duyệt qua tất cả các file trong một thư mục, trích xuất những cột dữ liệu cần thiết và ghép chúng lại thành một file duy nhất. Tiết kiệm được cả ngày làm việc!
Cách làm cơ bản của mình như sau:
- Sử dụng module
osđể lấy danh sách tất cả các file Excel trong một thư mục. - Dùng
pandas.read_excel()để đọc từng file. - Chọn các cột cần thiết (ví dụ:
df = df[['Cột A', 'Cột B', 'Cột C']]). - Sử dụng
pandas.concat()để nối các DataFrame lại với nhau. - Cuối cùng, lưu kết quả ra một file Excel mới bằng
.to_excel().
Ví dụ code cho phần đọc và trích xuất:
import pandas as pd
import os
dataframes = []
folder_path = 'duong_dan_toi_thu_muc_cua_ban'
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)
# Giả sử bạn chỉ cần cột 'Tên sản phẩm' và 'Doanh thu'
if 'Tên sản phẩm' in df.columns and 'Doanh thu' in df.columns:
data_subset = df[['Tên sản phẩm', 'Doanh thu']].copy()
data_subset['Nguồn file'] = filename # Thêm cột để biết dữ liệu từ file nào
dataframes.append(data_subset)
final_df = pd.concat(dataframes, ignore_index=True)
final_df.to_excel('tong_hop_doanh_thu.xlsx', index=False)
print('Đã tổng hợp xong!')Cách này thực sự hiệu quả với những ai phải xử lý nhiều file có cấu trúc tương tự nhau. Anh em nào đã từng dùng Python cho các tác vụ tương tự hoặc có mẹo gì hay hơn thì chia sẻ thêm cho mọi người cùng học hỏi nhé!