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
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
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.
- 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.
Đừ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.
