Chào mọi người,
Dạo gần đây mình có làm việc với một dự án yêu cầu trích xuất dữ liệu từ rất nhiều file Excel khác nhau, mà mỗi file lại có cấu trúc hơi khác một chút (cột tên, thứ tự cột, thậm chí là sheet tên khác nhau). Làm thủ công thì đúng là tốn thời gian và dễ sai sót.
Sau một hồi tìm tòi, mình đã tìm ra cách dùng Python để giải quyết vấn đề này một cách hiệu quả. Mình muốn chia sẻ lại cho anh em nào đang gặp tình huống tương tự.
Vấn đề: Cần gom dữ liệu từ nhiều file Excel, mỗi file có thể có cấu trúc hơi khác.
Giải pháp với Python:
- Sử dụng thư viện
pandasđể đọc file Excel. - Kết hợp
globđể tìm tất cả các file Excel trong một thư mục. - Viết một hàm để xử lý từng file: đọc file, xác định các cột cần thiết (có thể dùng tên cột hoặc vị trí tương đối), và trích xuất dữ liệu.
- Dùng
pd.concatđể gom tất cả dữ liệu đã trích xuất vào một DataFrame duy nhất.
Ví dụ đơn giản:
Giả sử các file của bạn đều có cột 'Doanh thu' và 'Ngày'.
import pandas as pd
import glob
folder_path = 'duong/dan/toi/cac/file/excel'
all_files = glob.glob(folder_path + "/*.xlsx")
df_list = []
for filename in all_files:
try:
df = pd.read_excel(filename)
# Xử lý để đảm bảo có các cột cần thiết, ví dụ:
if 'Doanh thu' in df.columns and 'Ngày' in df.columns:
selected_data = df[['Doanh thu', 'Ngày']]
df_list.append(selected_data)
else:
print(f"Warning: File {filename} missing required columns.")
except Exception as e:
print(f"Error reading file {filename}: {e}")
final_df = pd.concat(df_list, ignore_index=True)
print(final_df.head())
Cách này giúp mình tiết kiệm được rất nhiều thời gian và đảm bảo tính chính xác. Mọi người có cách nào hay hơn hoặc gặp khó khăn gì thì cùng thảo luận nhé!