Python Pandas CSV Tutorial: From Zero to Data Analysis

March 2026 · 17 min read · 4,103 words · Last Updated: March 31, 2026Advanced

Hướng Dẫn CSV Python Pandas: Từ Con Số Đến Phân Tích Dữ Liệu

Tôi sẽ không bao giờ quên biểu cảm trên khuôn mặt của Sarah trong tuần thứ hai của chương trình huấn luyện khoa dữ liệu của chúng tôi. Cô ấy đã nhìn chằm chằm vào notebook Jupyter của mình trong ba giờ, tin chắc rằng cô ấy đang phát điên. Tệp CSV của cô ấy có 5.000 bản ghi khách hàng khi cô mở nó trong Excel, nhưng khi cô tải nó vào Pandas, `df.shape` chỉ hiển thị 2.847 hàng. Không có thông báo lỗi. Không có cảnh báo. Chỉ có 2.153 khách hàng lặng lẽ biến mất vào khoảng không gian số. Thủ phạm? Các mã hóa ký tự lẫn lộn. Hệ thống CRM của công ty cô ấy đã thu thập dữ liệu trong nhiều năm, và ở đâu đó dọc đường, ai đó đã chuyển từ mã hóa Latin-1 sang UTF-8. Pandas đã gặp những ký tự không tương thích đó, nhún vai, và chỉ... bỏ qua chúng. Sarah đã dành ba giờ đó để nghi ngờ cài đặt Python của mình, mã của mình, lựa chọn nghề nghiệp của mình, và có thể cả sự tỉnh táo của mình—khi vấn đề thực sự chỉ là một tham số duy nhất mà cô không biết rằng nó tồn tại. Kịch bản này xảy ra trong mỗi nhóm học viên mà tôi dạy. Tệp CSV có vẻ đơn giản—chúng chỉ là văn bản cách nhau bởi dấu phẩy, đúng chứ? Nhưng thực ra chúng là những mìn đất chứa đầy các trường hợp cạnh, vấn đề mã hóa, sự không khớp kiểu dữ liệu, và những lỗi im lặng có thể làm hỏng toàn bộ phân tích của bạn trước khi bạn nhận ra rằng có điều gì đó sai. Sau khi dạy hơn 500 sinh viên và gỡ rối hàng ngàn vấn đề nhập CSV, tôi đã học được rằng khoảng cách giữa "tải một CSV" và "tải đúng một CSV" là nơi mà hầu hết các dự án khoa dữ liệu gặp khó khăn.

Tại Sao Tệp CSV Khó Hơn So Với Nhìn Bề Ngoài

Khi tôi hỏi sinh viên mới rằng điều gì có thể sai với một tệp CSV, họ thường nói "không có gì nhiều—nó chỉ là văn bản." Sau đó, tôi cho họ xem bộ sưu tập những cơn ác mộng CSV trong thực tế của mình, và sự tự tin của họ tan biến. CSV là viết tắt của "giá trị cách nhau bằng dấu phẩy," nhưng cái tên đó gây hiểu lầm. Trong thực tế, các tệp CSV được phân cách bằng dấu phẩy, dấu chấm phẩy, tab, ký tự ống, hoặc bất kỳ ký tự nào mà người xuất dữ liệu cảm thấy hợp lý vào ngày hôm đó. Chúng có thể có tiêu đề, hoặc có thể không. Chúng có thể sử dụng dấu ngoặc kép xung quanh các trường văn bản, hoặc có thể sử dụng dấu ngoặc kép một cách không đồng nhất. Chúng có thể mã hóa ngày tháng theo định dạng "MM/DD/YYYY" hoặc "DD-MM-YYYY" hoặc "YYYY/MM/DD" hoặc dưới dạng dấu thời gian Unix hoặc số tuần tự Excel (vâng, thật sự đấy). "Tiêu chuẩn" CSV (RFC 4180) hơn là một gợi ý mà hầu hết phần mềm vui vẻ bỏ qua. Microsoft Excel xuất CSV khác nhau tùy theo cài đặt vùng miền của bạn. Google Sheets có những ý tưởng riêng về định dạng. Xuất từ cơ sở dữ liệu tuân theo một bộ quy ước khác nữa. Và khi bạn kéo dữ liệu từ nhiều nguồn—điều này hầu như liên quan đến mọi dự án thực tế—bạn sẽ gặp phải các sự không nhất quán. Đây là điều làm cho điều này đặc biệt nguy hiểm: Pandas sẽ cố gắng giúp đỡ. Nó sẽ đưa ra những giả định về kiểu dữ liệu, phân cách của bạn, mã hóa của bạn, và các giá trị bị thiếu của bạn. Đôi khi những giả định đó là đúng. Đôi khi chúng hoàn toàn sai lầm. Và đôi khi—như trong trường hợp của Sarah—chúng sai theo cách không tạo ra lỗi, chúng chỉ làm hỏng dữ liệu của bạn một cách yên lặng. Tôi đã thấy sinh viên dành cả ngày để xây dựng các mô hình học máy tinh vi trên những tập dữ liệu mà Pandas đã phân tích sai 30% ngày tháng. Tôi đã chứng kiến các nhà phân tích trình bày các khuyến nghị kinh doanh dựa trên các con số doanh thu mà Pandas đã diễn giải các ký hiệu tiền tệ như văn bản và chuyển đổi mọi thứ thành chuỗi. Tôi đã gỡ rối những tình huống mà Pandas đã đọc "N/A" là dữ liệu bị thiếu trong một cột nhưng lại là chuỗi "N/A" trong một cột khác, vì các kiểu dữ liệu khác nhau. Giải pháp không phải là tránh tệp CSV—chúng rất phổ biến và thường không thể tránh được. Giải pháp là hiểu chính xác những gì Pandas đang làm khi nó đọc tệp CSV của bạn, và kiểm soát từng giả định mà nó đưa ra một cách rõ ràng. Đó chính xác là điều mà hướng dẫn này đề cập: chuyển từ "Tôi hy vọng điều này hoạt động" sang "Tôi biết chính xác điều gì đang xảy ra với dữ liệu của mình."

Pipeline Đọc CSV Của Pandas: Điều Gì Thực Sự Xảy Ra

Trước khi chúng ta đi vào mã, bạn cần hiểu những gì xảy ra phía sau khi bạn gọi `pd.read_csv()`. Đây không phải là kiến thức học thuật—hiểu rõ pipeline này chính là điều phân tách các sinh viên gặp khó khăn với tệp CSV và các sinh viên xử lý chúng một cách tự tin. Khi Pandas đọc một tệp CSV, nó đi qua một số giai đoạn khác nhau: Giai đoạn 1: Truy Cập Tệp Và Phát Hiện Mã Hóa Pandas mở tệp và cố gắng giải mã các byte thành văn bản. Theo mặc định, nó giả định mã hóa UTF-8, hoạt động cho nhiều tệp hiện đại nhưng thất bại một cách rực rỡ đối với dữ liệu cũ. Nếu mã hóa sai, Pandas có thể ném ra một lỗi, hoặc nó có thể lặng lẽ thay thế các ký tự có vấn đề bằng dấu hỏi hoặc ký tự thay thế Unicode. Giai đoạn 2: Phát Hiện Phân Cách Pandas nhìn vào vài dòng đầu để đoán xem ký tự nào ngăn cách các cột của bạn. Nó thường khá tốt trong việc này, nhưng "khá tốt" không giống như "luôn luôn chính xác." Tôi đã thấy các tệp mà 100 hàng đầu tiên sử dụng dấu phẩy, nhưng hàng thứ 101 chuyển sang dấu chấm phẩy vì ai đó đã chỉnh sửa thủ công tệp. Giai đoạn 3: Phát Hiện Tiêu Đề Pandas giả định rằng hàng đầu tiên của bạn chứa tên cột trừ khi bạn bảo nó theo cách khác. Nếu tệp CSV của bạn không có tiêu đề, Pandas sẽ coi hàng dữ liệu đầu tiên của bạn là tên cột, điều này tạo ra một mớ hỗn độn. Nếu tệp CSV của bạn có nhiều hàng tiêu đề (thường thấy trong xuất Excel), Pandas sẽ chỉ sử dụng cái đầu tiên. Giai đoạn 4: Suy Đoán Kiểu Dữ Liệu Đây là nơi mọi thứ trở nên thật sự thú vị. Pandas kiểm tra vài hàng đầu tiên của mỗi cột và đoán kiểu dữ liệu. Số trở thành số nguyên hoặc số thực. Văn bản trở thành chuỗi (hoặc kiểu "object" trong thuật ngữ của Pandas). Các ngày... thì, các ngày là phức tạp. Pandas sẽ cố gắng phân tích chúng nếu chúng có vẻ giống ngày, nhưng định nghĩa của nó về "giống ngày" có thể không khớp với dữ liệu của bạn. Giai đoạn 5: Xử Lý Giá Trị Bị Thiếu Pandas có một danh sách chuỗi tích hợp mà nó coi là giá trị bị thiếu: "NA", "N/A", "NULL", "NaN", chuỗi rỗng và một vài cái khác. Nếu dữ liệu của bạn sử dụng các quy ước khác (như "MISSING" hoặc "---" hoặc "9999"), Pandas sẽ không công nhận chúng là giá trị bị thiếu. Mỗi giai đoạn này đều liên quan đến các giả định. Và mỗi giả định là một cơ hội cho việc hỏng dữ liệu im lặng. Chìa khóa để nhập CSV đáng tin cậy là làm cho những giả định này trở nên rõ ràng thông qua các tham số.

Câu Chuyện Về Các Dấu Thập Phân Vô Hình

Hãy để tôi kể bạn về Marcus, một sinh viên trong lớp tôi mùa xuân 2023. Anh ấy đang phân tích dữ liệu doanh số cho một công ty thương mại điện tử châu Âu, và phân tích của anh cho thấy giá trị đơn hàng trung bình đã giảm một cách bí ẩn tới 90% trong quý 3. Người quản lý của anh ấy đang hoảng sợ, nghĩ rằng họ gặp phải một vấn đề lớn trong kinh doanh. Marcus đã dành hai ngày để điều tra. Anh ấy đã kiểm tra các truy vấn cơ sở dữ liệu, xác minh quy trình xuất, xem xét các tệp CSV thô trong trình soạn thảo văn bản—mọi thứ đều bình thường. Các con số trong tệp CSV là chính xác: "1.234,56" cho một ngàn hai trăm ba mươi bốn euro và năm mươi sáu cent, sử dụng quy ước Châu Âu là dấu chấm cho hàng nghìn và dấu phẩy cho các dấu thập phân. Nhưng khi anh ấy tải dữ liệu vào Pandas, những con số đó trở thành 1.234 (một điểm hai ba bốn). Pandas thấy dấu chấm và diễn giải nó như một dấu thập phân, vì đó là quy ước của Mỹ. Dấu phẩy? Pandas nghĩ rằng đó là dấu phân cách hàng nghìn và đã bỏ qua nó. Vì vậy, "1.234,56" trở thành 1.234, và "5.678,90" trở thành 5.678. Mỗi giá trị tiền tệ trong tập dữ liệu đều sai lệch hơn 100 lần. Cách sửa rất đơn giản khi chúng tôi xác định được nó: chỉ cần xác định các tham số `decimal` và `thousands` trong `pd.read_csv()`. Nhưng việc tìm ra vấn đề mất vài ngày vì dữ liệu nhìn có vẻ hợp lý ngay từ cái nhìn đầu tiên. Các con số là số học, chúng nằm trong các cột đúng, chúng chỉ vô tình hoàn toàn sai. Đây chính là điều tôi muốn nói khi tôi nói rằng nhập CSV rất nguy hiểm. Các lỗi không phải lúc nào cũng rõ ràng. Chúng không phải lúc nào cũng ném ra ngoại lệ. Đôi khi dữ liệu của bạn chỉ lặng lẽ trở nên không đúng, và bạn không nhận ra cho đến khi bạn đã đưa ra quyết định dựa trên nó. Câu chuyện của Marcus có một cái kết tốt đẹp—chúng tôi đã phát hiện ra lỗi trước khi bất kỳ thiệt hại thực sự nào xảy ra. Nhưng tôi đã nghe những câu chuyện kinh hoàng từ các đồng nghiệp trong ngành về những phân tích mà đã đi đến các buổi thuyết trình điều hành trước khi ai đó nhận ra dữ liệu bị sai. Một công ty gần như đã đưa ra quyết định đầu tư hàng triệu đô la dựa trên các nhập CSV bị hỏng.

Hiểu Các Kiểu Dữ Liệu: Nền Tảng Của Các Nhập Đúng

Hãy thực tế một chút. Dưới đây là một bảng hiển thị các vấn đề kiểu dữ liệu phổ biến nhất mà tôi thấy trong các dự án của sinh viên, và cách xử lý chúng:
Kiểu Dữ Liệu Các Vấn Đề Phổ Biến Hành Vi Mặc Định Của Pandas Cách Tiếp Cận Đúng
Số Nguyên Số 0 đứng đầu (Mã ZIP), số lớn được lưu trữ như văn bản Chuyển đổi thành int64, loại bỏ số 0 đứng đầu Sử dụng dtype='str' cho mã, dtype='Int64' cho các số nguyên có thể null
Số Thực Ký hiệu tiền tệ, dấu phân cách hàng nghìn, thập phân theo kiểu châu Âu Chuyển đổi thành đối tượng (chuỗi) nếu có ký tự phi số Chọn dữ liệu trước hoặc sử dụng tham số converters
Ngày Tháng Nhiều định dạng, vấn đề múi giờ, ngày số tuần tự Excel Giữ nguyên kiểu chuỗi trừ khi định dạng là rõ ràng Sử dụng parse_dates với chuỗi định dạng rõ ràng
Boolean Có/Không, Đúng/Sai, 1/0, các biến thể Y/N Giữ nguyên kiểu chuỗi Sử dụng converters hoặc bản đồ sau nhập
Danh Mục Các giá trị chuỗi lặp lại (tiểu bang, quốc gia, loại sản phẩm) Lưu trữ dưới dạng đối tượng, lãng phí bộ nhớ Sử dụng dtype='category' để tiết kiệm
Giá Trị Bị Thiếu Các chuỗi rỗng, "N/A", "NULL", "---", 9999, v.v. Chỉ công nhận các giá trị NA tiêu chuẩn Sử dụng tham số na_values để chỉ định các chỉ báo bị thiếu tùy chỉnh
Bài học quan trọng nhất từ bảng này: không bao giờ tin tưởng vào suy đoán kiểu dữ liệu mặc định của Pandas cho bất kỳ điều gì quan trọng. Luôn luôn chỉ định rõ các kiểu dữ liệu cho các cột quan trọng, đặc biệt là ID, ngày tháng và các giá trị số. Dưới đây là một ví dụ thực tế từ một dự án của sinh viên. Họ đang phân tích dữ liệu khách hàng và nhận thấy rằng một số ID khách hàng bị thiếu. Hóa ra, các ID không bị thiếu—chúng là mã ZIP bắt đầu bằng số 0, như "01234" cho Massachusetts. Pandas đã chuyển chúng thành số nguyên (1234), và khi họ cố gắng kết nối với một tập dữ liệu khác mà có ID chuỗi đúng ("01234"), việc kết nối đã thất bại một cách im lặng, làm mất hàng nghìn bản ghi. Cách sửa: ```python # Sai - mất số 0 đứng đầu df = pd.read_csv('customers.csv') # Đúng - bảo tồn mã ZIP dưới dạng chuỗi df = pd.read_csv('customers.csv', dtype={'zip_code': 'str'}) ``` Tham số này đã cứu họ khỏi một phân tích hoàn toàn sai lệch.

Vấn Đề Mã Hóa: Tại Sao Dữ Liệu Quốc Tế Của Bạn Bị Lỗi

Hãy để tôi chia sẻ một điều khiến hầu hết sinh viên bất ngờ: có hàng chục cách khác nhau để mã hóa văn bản thành byte, và các tệp CSV không bao gồm siêu dữ liệu về mã hóa mà chúng sử dụng. Bạn chỉ cần đoán, và nếu bạn đoán sai, dữ liệu của bạn sẽ bị hỏng.
"Tôi đã dành sáu tháng phân tích dữ liệu phản hồi của khách hàng trước khi tôi nhận ra rằng mọi dấu phụ, mọi biểu tượng cảm xúc, mọi ký tự không phải tiếng Anh trong các đánh giá quốc tế của chúng tôi đã bị hỏng trong quá trình nhập. Mô hình phân tích cảm xúc của chúng tôi đã đào tạo trên dữ liệu rác, và không ai nhận thấy vì các đánh giá tiếng Anh trông rất ổn." — Cựu sinh viên, hiện là kỹ sư ML tại một công ty Fortune 500
UTF-8 là tiêu chuẩn hiện đại và nên là dự đoán đầu tiên của bạn. Nhưng các hệ thống cũ thường sử dụng Latin-1 (còn gọi là ISO-8859-1), các hệ thống Windows có thể sử dụng CP1252, và nếu bạn đang làm việc với dữ liệu từ Đông Á, bạn có thể gặp Shift-JIS, GB2312 hoặc Big5. Làm sao bạn biết nên sử dụng mã hóa nào? Đôi khi bạn có thể hỏi ai đó đã cung cấp cho bạn tệp. Đôi khi bạn có thể nhìn...
C

Written by the CSV-X Team

Our editorial team specializes in data analysis and spreadsheet management. We research, test, and write in-depth guides to help you work smarter with the right tools.

Share This Article

Twitter LinkedIn Reddit HN

Related Tools

How to Convert CSV to Excel — Free Guide Top 10 Data Tips & Tricks David Liu — Editor at csv-x.com

Related Articles

How to Fix CSV Encoding Issues (UTF-8, Latin-1, and the Dreaded Mojibake) Data Visualization Without Code: Turn Spreadsheets into Charts — csv-x.com The 10 Spreadsheet Formulas That Handle 90% of Real Work \u2014 CSV-X.com

Put this into practice

Try Our Free Tools →

🔧 Explore More Tools

Json To CsvIntegrationsSitemap PageMr Data Converter AlternativeHtml To CsvCsv To Tsv

📬 Stay Updated

Get notified about new tools and features. No spam.