Chào các anh chị em trong diễn đàn,
Dạo này em đang tập tành dùng Python để xử lý file Excel, thấy nó mạnh mẽ và tiết kiệm thời gian ghê. Hôm nay em muốn chia sẻ một script nhỏ mà em dùng để tự động làm sạch dữ liệu, cụ thể là loại bỏ các ký tự đặc biệt và khoảng trắng thừa ở đầu/cuối ô trong bảng tính Excel.
Trong công việc, đôi khi chúng ta nhận được file Excel mà dữ liệu bị lẫn lộn nhiều ký tự lạ hoặc có những khoảng trắng không cần thiết, gây khó khăn khi sử dụng các hàm như VLOOKUP, INDEX-MATCH hay khi nhập liệu vào hệ thống.
Với Python và thư viện pandas, việc này trở nên rất đơn giản:
import pandas as pd
import re
def clean_excel_data(input_file, output_file):
try:
df = pd.read_excel(input_file)
# Duyệt qua từng cột và từng dòng để làm sạch
for col in df.columns:
if df[col].dtype == 'object': # Chỉ xử lý cột chứa chuỗi
# Loại bỏ khoảng trắng thừa ở đầu và cuối
df[col] = df[col].str.strip()
# Loại bỏ các ký tự không phải chữ cái, số và khoảng trắng (giữ lại khoảng trắng giữa các từ)
df[col] = df[col].apply(lambda x: re.sub(r'[^\w\s]', '', str(x)) if pd.notnull(x) else x)
# Chuyển về dạng string sau khi xử lý
df[col] = df[col].astype(str)
df.to_excel(output_file, index=False)
print(f"Dữ liệu đã được làm sạch và lưu vào {output_file}")
except FileNotFoundError:
print(f"Lỗi: Không tìm thấy file {input_file}")
except Exception as e:
print(f"Đã xảy ra lỗi: {e}")
# --- Cách sử dụng ---
input_excel = 'du_lieu_ban_dau.xlsx'
output_excel = 'du_lieu_da_lam_sach.xlsx'
clean_excel_data(input_excel, output_excel)
Giải thích:
pd.read_excel(): Đọc dữ liệu từ file Excel vào DataFrame của pandas.df.columns: Lấy danh sách tất cả các cột.df[col].dtype == 'object': Kiểm tra xem cột đó có chứa dữ liệu dạng chuỗi hay không..str.strip(): Loại bỏ khoảng trắng ở đầu và cuối chuỗi.re.sub(r'[^\w\s]', '', str(x)): Sử dụng biểu thức chính quy để loại bỏ tất cả các ký tự không phải là chữ cái, số hoặc khoảng trắng.\wtương ứng với ký tự chữ và số,\stương ứng với ký tự khoảng trắng.df.to_excel(): Lưu DataFrame đã xử lý ra file Excel mới.
Script này rất hữu ích khi bạn cần xử lý hàng loạt file Excel có chất lượng dữ liệu không đồng đều. Hy vọng nó sẽ giúp ích cho mọi người!
Có anh chị nào có kinh nghiệm dùng Python xử lý Excel chia sẻ thêm không ạ?