Dọn dữ liệu CSV bằng Claude Code: Từ file lộn xộn đến báo cáo sạch
Biến file CSV lộn xộn thành dữ liệu sạch chỉ bằng ngôn ngữ tự nhiên. Hướng dẫn thực chiến chuẩn hoá encoding, loại bỏ trùng lặp fuzzy, và phân tích chất lượng data.
Định nghĩa
CSV cleaning là quá trình biến file Excel hay CSV "bẩn" — kiểu như bản export từ hệ thống kế toán cũ hay máy chấm công công ty — thành dữ liệu sạch, có định dạng chuẩn. Công việc này bao gồm sửa lỗi font tiếng Việt, xử lý ngày tháng định dạng lung tung, gộp các dòng trùng lặp (từ khớp chính xác đến khớp mờ), và kiểm tra dữ liệu thiếu hay bất thường. Khác với việc xóa file rác, đây là bài toán tái cấu trúc ngữ nghĩa: biến đống text thô thành dữ liệu có kiểu (typed data) mà máy có thể tính toán và phân tích được.
Giải thích chi tiết
Encoding và BOM: Cứu file CSV tiếng Việt bị lỗi font
File CSV từ Excel bản Việt Nam hay phần mềm kế toán cũ thường mang "bệnh" encoding: Windows-1252, Latin-1, hoặc UTF-8 có BOM (Byte Order Mark). Khi mở bằng pandas.read_csv() mặc định, bạn sẽ thấy "Nguyễn" biến thành "Nguyá»…n" — kiểu mojibake quen thuộc.
Claude Code tự động phát hiện encoding qua chardet hoặc file -i, sau đó chuẩn hoá về UTF-8 thuần (không BOM) trước khi xử lý. Điểm mấu chốt là thứ tự xử lý đúng: phải sửa encoding trước khi gộp trùng lặp, nếu không "Nguyễn Văn A" (UTF-8) và "Nguyen Van A" (ASCII) sẽ bị coi là hai người khác nhau.
Structural Parsing: Khi dấu phẩy và xuống dòng gây rối
CSV không đơn thuần là "phân cách bằng phẩy". Theo chuẩn RFC 4180, nếu một ô chứa dấu phẩy hoặc xuống dòng, nó phải được bọc trong dấu ngoặc kép. Nhưng file export từ Excel thường vi phạm: ghi chú của khách hàng chứa xuống dòng ngẫu nhiên, địa chỉ có dấu phẩy không được escape.
Claude Code xử lý bằng cách thử nghiệm delimiter (,, ;, tab), phát hiện xuống dòng trong chuỗi được quote, và dùng csv.Sniffer hoặc polars.read_csv(try_parse_dates=True) để xây dựng lại cấu trúc đúng. Đây là bước chuyển đổi không mất mát — phải giữ nguyên dữ liệu gốc trong khi sửa cấu trúc.
Semantic Type Inference: AI "đọc" hiểu ngữ cảnh
Đây là lợi thế của Claude Code so với script thuần. Khi gặp cột "01/02/2023", script thông thường không biết đây là 1 tháng 2 (kiểu Mỹ) hay 2 tháng 1 (kiểu Việt Nam). Claude dùng suy luận theo ngữ cảnh: nếu cột tên là "Ngày giao hàng" và các giá trị khác là "15/03/2023", nó hiểu đây là DD/MM/YYYY; nếu cột là "Expiry Date" trong ngữ cảnh thẻ tín dụng, nó nhận ra MM/DD/YYYY.
Tương tự với tiền tệ: "$1,200", "1200.00", "1.2k", "N/A" là bốn cách viết của cùng một loại dữ liệu (tiền tệ). Claude chuẩn hoá về dạng số trước khi tính toán.
Deduplication: Từ khớp chính xác đến logic mờ
Exact deduplication dùng SHA-256 hash cho toàn bộ dòng — phù hợp với file log bị ghi đè trùng.
Fuzzy deduplication là "chiêu" hay cho danh sách khách hàng. "Nguyễn Văn A" và "Nguyên Văn A" (sai chính tả) hoặc "Hồ Chí Minh" và "TP.HCM" thực chất là cùng một đối tượng. Cách ngây thơ so sánh từng cặp một (O(n²)) sẽ bị treo máy với 1 triệu dòng (10¹² phép so sánh).
Claude Code áp dụng blocking + MinHash LSH:
- Blocking: Chia nhỏ dataset thành các nhóm dựa trên heuristic đơn giản (ví dụ: 3 ký tự đầu tên + mã vùng điện thoại). Chỉ so sánh các bản ghi trong cùng nhóm.
- MinHash LSH: Tính signature 10-bit cho mỗi bản ghi, các bản ghi giống nhau sẽ có xác suất cao rơi vào cùng bucket. Giảm độ phức tạp từ O(n²) xuống O(n) với độ chính xác 99.5%.
Profiling và Validation: Bác sĩ cho bộ dữ liệu
Trước khi phân tích, cần biết dataset "khoẻ" hay "ốm":
- Missing values: Phát hiện bằng IQR (Interquartile Range) cho số, hoặc phân tích tần suất cho dữ liệu phân loại.
- Cardinality: Cột "Giới tính" có 50 giá trị khác nhau → có lỗi nhập liệu (có lẽ gõ nhầm "Nam", "nam", "NAM", "male").
- Outliers: Z-score hoặc IQR method để phát hiện điểm bất thường (ví dụ: đơn hàng 50 tỷ trong file bán hàng trung bình 500k).
Claude Code tạo báo cáo chất lượng dữ liệu tự động: % null, phân bố, ma trận tương quan, và gợi ý cách sửa cụ thể.
Ví dụ thực tế
Dọn file bán hàng Shopee/Lazada export
Bạn nhận file orders.csv 50MB từ Shopee Seller Center: encoding UTF-8 BOM, ngày tháng lộn xộn (có dòng DD/MM/YYYY, có dòng YYYY-MM-DD), sđt khách bị trùng do khách đặt lại nhiều lần.
Workflow với Claude Code:
# Trong Claude Code terminal
claude -p "Clean this CSV: detect encoding, standardize dates to ISO, remove duplicate phone numbers keeping latest order date, output to orders_cleaned.csv"Claude sẽ:
- Chạy
chardet→ phát hiện UTF-8-SIG → chuyển sang UTF-8 thuần - Parse ngày tháng bằng
dateutil.parservớidayfirst=True(ưu tiên định dạng VN) - Gộp trùng theo sđt: groupby phone → sort theo ngày → giữ lại dòng mới nhất
- Tạo báo cáo: "Đã xử lý 12.450 dòng, loại 340 trùng lặp, chuẩn hoá 89 ngày tháng lỗi format"
Chuẩn hoá danh sách nhân viên từ file chấm công Excel
File attendance.csv export từ máy chấm công công ty: tên nhân viên bị lỗi font ("Nguyá»…n Văn A"), có dòng trùng do nhân viên quẹt thẻ 2 lần trong 1 phút.
Prompt:
Dọn file attendance.csv:
- Fix encoding từ Windows-1252 sang UTF-8
- Fuzzy match tên: "Nguyễn Văn A" và "Nguyên Van A" là cùng người (dùng Levenshtein distance < 3)
- Loại bỏ duplicate timestamps trong vòng 5 phút (cùng người, cùng ngày)
- Output ra file mới với cột "Standardized Name"Claude tự sinh script Python dùng fuzzywuzzy hoặc thefuzz để match tên, áp dụng blocking bằng phần họ để giảm số lần so sánh từ O(n²) xuống.
Phân tích chi tiêu cá nhân từ bank statement
File bank_statement.csv từ Vietcombank/TPBank: cột "Mô tả" chứa text tự do ("CHUYEN TIEN MUA CA PHE", "HOAN TIEN LAZADA"), không có phân loại sẵn.
Workflow:
Phân loại giao dịch trong bank_statement.csv:
- Tạo cột Category dựa trên keywords trong Description
- "CA PHE", "HIGHLANDS", "STARBUCKS" → Food & Beverage
- "SHOPEE", "LAZADA", "TIKI" → Shopping
- " Grab ", "BE " → Transport
- Tính tổng chi tiêu theo tháng và category
- Vẽ biểu đồ cột bằng matplotlib lưu ra spending_by_month.pngClaude đọc file → sinh pandas code → chạy trong sandbox → trả về ảnh chart và summary: "Tháng này bạn chi 5.2 triệu cho F&B, vượt 30% so với tháng trước".
Ứng dụng
Data Analyst tại Startup
Dùng Claude Code như "data science REPL" — không cần mở Jupyter, chỉ cần mô tả transformation cần thiết. Claude tự sinh code pandas/polars, xử lý file 100MB+ trong sandbox, và lặp lại dựa trên kết quả. Tiết kiệm 60-80% thời gian so với viết script thủ công.
Kế toán / Sales Ops
Xử lý báo cáo thuế, báo cáo bán hàng từ các nguồn khác nhau (POS, website, sàn TMĐT). Claude chuẩn hoá format, mapping SKU giữa các hệ thống, và phát hiện bất thường (ví dụ: đơn hàng âm giá trị, số lượng null).
Developer làm ETL
Thay vì viết Airflow DAG phức tạp cho bước "cleaning", dùng Claude Code để prototype pipeline nhanh. Sau khi ổn định, dùng /loop để lên lịch chạy định kỳ (ví dụ: mỗi sáng 8h dọn file báo cáo từ hệ thống legacy).
Freelancer nhận job "dọn data"
Nhận file CSV "bẩn" từ khách (thường là doanh nghiệp nhỏ chưa có data team), dùng Claude Code để clean và analyze trong thời gian ngắn, deliver kết quả sạch + báo cáo insight. Chi phí API (khoảng $0.5-2/file) thấp hơn nhiều so với thuê data engineer viết script.
So sánh: Claude Code vs Công cụ truyền thống
| Tiêu chí | Excel / Google Sheets | OpenRefine | Python Script thuần | Claude Code |
|---|---|---|---|---|
| Tốc độ setup | Ngay lập tức | Cài đặt Java, học interface | Viết code, debug | Mô tả bằng tiếng Việt, chạy ngay |
| Xử lý 100k+ rows | Chậm, crash | Ổn định | Nhanh (pandas/DuckDB) | Nhanh (tự sinh DuckDB/polars) |
| Fuzzy matching | Khó (cần plugin) | Có sẵn (clustering) | Code thủ công (thefuzz) | Tự động, tối ưu thuật toán |
| Semantic inference | Không | Hạn chế | Không (chỉ regex) | Có (nhận diện ngày tháng, địa chỉ) |
| Lặp lại (iterative) | Thủ công | Thủ công | Phải sửa code | Conversational, context được giữ |
| Chi phí | Free (giới hạn rows) | Free | Free (thời gian dev) | $0.01-0.1 per 1k rows (API cost) |
Kết luận: Excel phù hợp file nhỏ (< 10k rows) và người không biết code. Python script tốt cho production pipeline nhưng tốn thời gian viết. Claude Code nằm ở sweet spot: nhanh như script, dễ như Excel, và thông minh hơn cả hai nhờ khả năng suy luận ngữ nghĩa.
Bài viết liên quan
Cùng cụm (everyday-uses)
- Tự động dọn file, đổi tên, sắp xếp ảnh bằng Claude — Mở rộng từ CSV sang quản lý file đa phương tiện và tự động hoá thư mục Downloads
- 30+ use case không cần code: Tài chính, pháp lý, tự động hoá — Ứng dụng Claude vào các tác vụ đời thường không liên quan đến lập trình
- Prompt engineering cho Claude Code: Hỏi đúng để được đúng — Kỹ thuật viết prompt để Claude hiểu đúng ý định dọn dữ liệu của bạn
- 10 sai lầm người mới hay mắc và cách tránh — Lỗi thường gặp khi làm việc với CSV lớn và cách khắc phục
Đọc tiếp
- Claude Code cho Data: CSV, phân tích, visualisation — Chuyên sâu về phân tích dữ liệu và visualization cho Data Analyst
- Tích hợp Claude Code vào CI/CD pipeline — Tự động hoá việc dọn CSV trong pipeline CI/CD với Headless Mode
Tự động dọn file, đổi tên và sắp xếp ảnh hàng loạt bằng Claude Code
Dùng Claude Code để dọn dẹp thư mục Download, đổi tên ảnh hàng loạt theo nội dung, và sắp xếp file tự động bằng AI — không cần viết script phức tạp.
Claude Code cho người không biết code: Tự động hóa tài chính, pháp lý, vận hành
Claude Code không chỉ cho developer. Cách kế toán, luật sư và chủ shop dùng AI tự động hóa duyệt chi phí, review hợp đồng, xử lý báo cáo—không cần biết lập trình.