Đọc/Lưu Dữ Liệu Văn Bản, JSON — Không Phải Lúc Nào Cũng Gọn Gàng

Tóm tắt nhanh: CSV (dạng bảng) và JSON (dạng lồng nhau) là 2 định dạng dữ liệu phổ biến nhất bạn sẽ gặp. pandas đọc được cả 2 chỉ bằng 1 dòng lệnh — nhưng dữ liệu thật thường có lỗi định dạng cần xử lý thêm.
2 định dạng phổ biến nhất: CSV, JSONDữ liệu thật hay bị lỗi định dạngLuôn kiểm tra ngay sau khi đọc

Bạn đã biết đọc CSV cơ bản (bài trước). Giờ đi sâu hơn: dữ liệu thật không phải lúc nào cũng là 1 file CSV sạch sẽ — có thể là JSON (dạng lồng nhau phổ biến trong API web), hoặc CSV bị lỗi định dạng cần xử lý thêm.

2 định dạng phổ biến nhất: CSV và JSON

CSVDạng bảng, phân tách bằng dấu phẩypd.read_csv()JSONDạng lồng nhau, key-valuepd.read_json()
CSV phù hợp dữ liệu dạng bảng đơn giản (1 dòng = 1 bản ghi). JSON phù hợp dữ liệu có cấu trúc lồng nhau (ví dụ: 1 khách hàng có nhiều địa chỉ, mỗi địa chỉ có nhiều trường con) — thường gặp khi lấy dữ liệu từ API web.

Cả 2 đều đọc được bằng 1 dòng: pd.read_csv("file.csv") hoặc pd.read_json("file.json"). Với JSON có cấu trúc lồng sâu, có thể cần thêm bước xử lý để “làm dẹt” (flatten) dữ liệu về dạng bảng phù hợp với DataFrame.

Dữ liệu thật hiếm khi gọn gàng — vài lỗi hay gặp

Dữ liệu thật hiếm khi gọn gàng như file mẫuSai encodingTiếng Việt hiện lỗi ô vuông→ cần chỉ rõ encoding=”utf-8″Dòng thừa ở đầu fileVài dòng ghi chú trước bảng dữ liệu→ dùng tham số skiprowsLuôn .head() kiểm tra ngay sau khi đọcphát hiện lỗi sớm, đỡ mất công về sau
2 lỗi hay gặp nhất khi đọc file thật: sai encoding (đặc biệt với tiếng Việt có dấu) và dòng thừa/ghi chú ở đầu file trước khi đến bảng dữ liệu thật.

pandas cho phép xử lý cả 2 vấn đề này ngay khi đọc file, không cần sửa file gốc: chỉ rõ encoding="utf-8" để đọc đúng tiếng Việt có dấu, hoặc skiprows=N để bỏ qua N dòng đầu không phải dữ liệu thật. Luôn nhớ chạy .head() ngay sau khi đọc để phát hiện sớm nếu có lỗi, thay vì phân tích cả 1 lúc rồi mới nhận ra dữ liệu đọc sai từ đầu.

Xem thêm

Video này (tiếng Anh) thực hành đọc CSV và ghi ra JSON, thao tác ngược lại với bài học chính ở trên.

Checklist tự kiểm tra sau bài này
  • Bạn đọc được cả file CSV và file JSON bằng pandas.
  • Bạn biết cách xử lý lỗi encoding khi đọc file có tiếng Việt.
  • Bạn biết dùng skiprows khi file có dòng ghi chú thừa ở đầu.
Cần nhớ

Đừng giả định file dữ liệu luôn “sạch” — luôn kiểm tra ngay sau khi đọc (.head(), .info()). Phần lớn thời gian thực tế của người làm phân tích dữ liệu không phải để phân tích, mà để xử lý những lỗi định dạng nhỏ như thế này trước khi phân tích được.

Câu hỏi thường gặp

Làm sao biết file CSV dùng dấu phẩy hay dấu chấm phẩy để phân tách?

Có thể mở file bằng text editor để xem trước, hoặc dùng tham số sep=”;” trong read_csv() nếu file dùng dấu chấm phẩy (phổ biến ở 1 số vùng dùng dấu phẩy làm dấu thập phân).

JSON lồng nhau phức tạp có luôn cần ‘làm dẹt’ trước khi dùng không?

Không bắt buộc — tùy vào việc bạn cần truy cập dữ liệu ở tầng nào. Với dữ liệu quá lồng sâu, làm dẹt trước sẽ giúp dùng các lệnh pandas cơ bản dễ hơn.

Có định dạng nào khác ngoài CSV/JSON cần biết không?

Có (Excel, SQL, Parquet…) — 2 bài sau sẽ nói thêm về kết nối API và cơ sở dữ liệu, đủ cho hầu hết nhu cầu thực tế của lộ trình này.

Nguồn: Wes McKinney, Python for Data Analysis (3rd ed.), Chương 6 “Data Loading, Storage, and File Formats”, phần đọc dữ liệu văn bản/JSON (O’Reilly, 2022). Nội dung diễn giải lại bằng lời riêng, không sao chép nguyên văn.