Menu

Tự động hóa việc làm sạch dữ liệu Excel với Python: Loại bỏ ký tự đặc biệt và khoảng trắng thừa

Đào Thị Đức 05/06/2026 22:17 552 lượt xem 1 trả lời

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. \w tương ứng với ký tự chữ và số, \s tươ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 ạ?

5

Hay quá bạn ơi! Mình cũng đang vật lộn với mấy file dữ liệu "bẩn" y chang vậy đó. Python đúng là cứu cánh cho mấy vụ này. Bạn có thể chia sẻ cụ thể hơn về cách bạn dùng thư viện nào để đọc file Excel và xử lý chuỗi không? Mình đang tìm hiểu về Pandas, không biết có tiện cho việc này không.

3

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký