💡 Key Takeaways
- The Real Cost of Data Cleaning Nobody Talks About
- Why CSV Files Are Both Perfect and Terrible
- The Three-Phase Approach to Faster Data Cleaning
- Tools That Actually Save Time (And Ones That Don't)
Tôi vẫn nhớ ngày tôi nhận ra rằng mình đã dành sáu giờ để làm sạch một bộ dữ liệu duy nhất. Sáu giờ. Không xây dựng mô hình, không tạo ra những hiểu biết, không tạo ra các trực quan hóa gây ấn tượng với các bên liên quan—chỉ là làm sạch. Xóa các bản sao, tiêu chuẩn hóa định dạng ngày tháng, khắc phục sự cố mã hóa, đối chiếu tên cột không khớp. Đó là năm 2018, tôi đã làm việc được ba năm trong vai trò kỹ sư dữ liệu tại một công ty thương mại điện tử vừa và nhỏ, và tôi đang chìm trong các tệp CSV trông sạch sẽ ở cái nhìn đầu tiên nhưng bên trong lại là một mớ hỗn độn tuyệt đối.
💡 Những điểm chính
- Chi phí thực tế của việc làm sạch dữ liệu mà không ai nói đến
- Tại sao tệp CSV vừa hoàn hảo vừa tệ hại
- Cách tiếp cận ba giai đoạn để làm sạch dữ liệu nhanh hơn
- Công cụ thực sự tiết kiệm thời gian (Và những cái không làm được)
Ngày hôm đó đã thay đổi mọi thứ với tôi. Tôi bắt đầu theo dõi thời gian của mình một cách nghiêm túc, và các con số thì rất tàn nhẫn: 78% giờ làm việc của tôi dành cho việc chuẩn bị và làm sạch dữ liệu. Không phải 78% của một dự án đơn lẻ—mà là 78% của toàn bộ công việc của tôi. Tôi không phải là người duy nhất. Một cuộc khảo sát năm 2020 do Anaconda thực hiện cho thấy các nhà khoa học dữ liệu dành 45% thời gian của họ cho việc tải và làm sạch dữ liệu, và thêm 19% cho việc thu thập dữ liệu. Đó là 64% ngay ở đó, và theo kinh nghiệm của tôi khi làm việc với những nguồn dữ liệu thực tế lộn xộn hơn, con số đó thậm chí còn cao hơn.
Nhìn về phía trước đến hôm nay. Tôi hiện là một kỹ sư dữ liệu cấp cao với hơn tám năm kinh nghiệm, và tôi đã làm việc với mọi thứ từ kho dữ liệu hoàn hảo đến các tệp xuất CSV cũ kỹ mà trông như thể đã được lắp ráp bởi một nhóm người chưa bao giờ gặp nhau. Tôi đã làm sạch hàng triệu hàng trong hàng trăm dự án, và tôi đã học được điều gì đó quan trọng: 80% thời gian chúng ta dành cho việc làm sạch dữ liệu không phải là điều không thể tránh khỏi. Đó là triệu chứng của những công cụ tồi, quy trình làm việc không hiệu quả và hiểu lầm cơ bản về những gì thực sự cần thiết cho việc làm sạch dữ liệu.
Bài viết này là tất cả những gì tôi ước ai đó đã nói với tôi vào năm 2018. Đó là những chiến lược đã được thử thách trong thực chiến, những hiểu biết được giành được khó khăn, và những công cụ thực tiễn đã giúp tôi giảm thời gian làm sạch dữ liệu từ 80% xuống còn khoảng 35%—thậm chí có lúc còn thấp hơn. Nếu bạn mệt mỏi vì phải dành cả ngày đấu tranh với các tệp CSV, thay vì thực hiện công việc mà bạn thực sự đã được đào tạo, hãy tiếp tục đọc.
Chi phí thực tế của việc làm sạch dữ liệu mà không ai nói đến
Hãy bắt đầu với một số phép toán không thoải mái. Nếu bạn là một chuyên gia dữ liệu kiếm được 85.000 đô la mỗi năm (khoảng mức trung bình cho các nhà phân tích dữ liệu ở Mỹ), và bạn đang dành 80% thời gian của mình cho việc làm sạch dữ liệu, điều đó có nghĩa là tổ chức của bạn đang chi 68.000 đô la mỗi năm chỉ để bạn chuẩn bị dữ liệu. Không phải là phân tích nó. Không phải lấy ra những hiểu biết từ nó. Chỉ là chuẩn bị thôi.
Bây giờ hãy nhân con số đó lên cho một đội nhóm. Một đội dữ liệu gồm năm người ở mức lương đó đang chi 340.000 đô la mỗi năm chỉ cho việc làm sạch dữ liệu. Đó là nhiều hơn chi phí để thuê một nhà khoa học dữ liệu cấp cao khác. Đủ để tài trợ cho những cải tiến cơ sở hạ tầng quan trọng, các chương trình đào tạo, hoặc đầu tư vào công cụ thực sự có thể giảm bớt gánh nặng làm sạch đó.
Nhưng chi phí tài chính chỉ là một phần của câu chuyện. Còn có chi phí cơ hội—những phân tích chưa bao giờ xảy ra, những hiểu biết chưa bao giờ xuất hiện, những câu hỏi chưa bao giờ được đặt ra bởi vì đội ngũ quá bận rộn với việc sửa đổi định dạng ngày tháng và xóa bỏ các hàng trùng lặp. Trong vai trò trước đây của tôi, chúng tôi ước tính rằng mỗi giờ dành cho việc làm sạch dữ liệu, chúng tôi mất khoảng 2,5 giờ làm việc phân tích tiềm năng. Tại sao 2,5? Bởi vì thời gian bạn đã chuyển đổi khỏi chế độ làm sạch và quay trở lại tư duy phân tích, bạn đã mất đà, quên bối cảnh, và cần thời gian để xây dựng lại mô hình tư duy của bạn về vấn đề đó.
Rồi còn có chi phí tâm lý. Việc làm sạch dữ liệu là tẻ nhạt, lặp đi lặp lại, và thường cảm thấy như công việc của Sisyphean. Bạn sửa một bộ dữ liệu, và ngày mai lại có một bộ dữ liệu khác với những vấn đề tương tự. Điều này dẫn đến kiệt sức, không hài lòng với công việc và tỷ lệ nhân viên nghỉ việc. Trong một cuộc khảo sát năm 2019 mà tôi thực hiện không chính thức trong mạng lưới của tôi các chuyên gia dữ liệu, 67% cho biết "quá nhiều thời gian vào việc làm sạch dữ liệu" là yếu tố chính trong việc cân nhắc rời khỏi vai trò hiện tại của họ.
Điều tồi tệ nhất? Hầu hết nỗi đau này là do chính chúng ta tự gây ra. Chúng ta đang sử dụng những công cụ được thiết kế cho công việc sai, theo những quy trình làm việc có ý nghĩa vào năm 2005 nhưng hiện nay lại vô cùng kém hiệu quả, và chấp nhận các tiêu chuẩn chất lượng dữ liệu sẽ khiến mọi lĩnh vực kỹ thuật khác phải cười. Hãy tưởng tượng nếu các kỹ sư phần mềm dành 80% thời gian của họ để sửa lỗi cú pháp vì IDE của họ không có công cụ kiểm tra. Đó chính xác là vị trí của chúng ta trong việc làm sạch dữ liệu.
Tại sao tệp CSV vừa hoàn hảo vừa tệ hại
Các tệp CSV là những con dán của thế giới dữ liệu—chúng đã tồn tại qua mọi sự thay đổi công nghệ, chúng có mặt ở khắp nơi và hầu như không thể tiêu diệt được. Có một lý do tốt cho điều này: CSV cực kỳ đơn giản. Nó dễ đọc với con người, hoạt động trên mọi nền tảng, không cần phần mềm đặc biệt, và đã tồn tại từ những năm 1970. Khi bạn cần chuyển dữ liệu giữa các hệ thống, CSV thường là yếu tố chung thấp nhất mà chỉ cần hoạt động.
80% thời gian chúng ta dành cho việc làm sạch dữ liệu không phải là điều không thể tránh khỏi—đó là triệu chứng của những công cụ tồi, các quy trình làm việc không hiệu quả, và sự hiểu lầm cơ bản về những gì thực sự cần thiết cho việc làm sạch dữ liệu.
Nhưng sự đơn giản đó đi kèm với một chi phí ẩn khổng lồ. CSV không có sự thực thi schema, không có xác thực kiểu dữ liệu, không có cách tiêu chuẩn để xử lý các giá trị null, và không có hỗ trợ tích hợp cho các cấu trúc lồng nhau. Nó là một định dạng nói rằng "đây là một số văn bản được phân tách bằng dấu phẩy, chúc bạn may mắn trong việc hiểu nó có nghĩa là gì." Điều này dẫn đến một hàng loạt vấn đề vô tận tiêu tốn thời gian của chúng tôi.
Theo kinh nghiệm của tôi, đây là những vấn đề CSV phổ biến nhất mà tôi gặp phải, xếp hạng theo mức độ thời gian mà chúng lãng phí:
- Vấn đề mã hóa (25% thời gian làm sạch): UTF-8, Latin-1, Windows-1252—các tệp CSV có mọi kiểu mã hóa có thể tưởng tượng được, và những mã hóa không khớp khiến văn bản trở thành ngớ ngẩn. Một lần tôi đã tốn bốn giờ để gỡ lỗi một ký tự dấu nháy thông minh duy nhất đã làm sập toàn bộ quy trình của chúng tôi.
- Phân tách không đồng nhất (20%): Mặc dù tên gọi, các tệp CSV không phải lúc nào cũng sử dụng dấu phẩy. Đôi khi là dấu chấm phẩy, tab hoặc dấu gạch ngang. Đôi khi chúng thay đổi giữa chừng trong tệp. Đôi khi dấu phân tách xuất hiện trong chính dữ liệu và không được thoát đúng cách.
- Định dạng ngày tháng hỗn loạn (18%): "01/02/2023" là ngày 2 tháng 1 hay ngày 1 tháng 2? "2023-01-02" là một ngày hay chỉ là một chuỗi? Còn "Jan 2, 2023" hay "2-Jan-23" thì sao? Mỗi hệ thống đều có quy ước riêng của nó, và CSV không bảo lưu bất kỳ quy ước nào.
- Không rõ loại (15%): "123" là một số hay một chuỗi? Còn "00123" thì sao? Hoặc "1.23e5"? CSV lưu trữ mọi thứ dưới dạng văn bản, để bạn phải đoán loại mong muốn.
- Xử lý giá trị null (12%): Chuỗi trống, "NULL", "N/A", "null", ô trống, "-", "0"—tôi đã thấy ít nhất 30 cách khác nhau để biểu thị dữ liệu bị thiếu trong các tệp CSV, thường trộn lẫn trong cùng một tệp.
- Không nhất quán ở tiêu đề (10%): Tên cột có khoảng trắng, ký tự đặc biệt, viết hoa không nhất quán, hoặc không có tiêu đề nào. Đôi khi hàng tiêu đề lại là hàng 3 vì ai đó đã thêm siêu dữ liệu ở trên cùng.
Thảm kịch là tất cả những vấn đề này đều có thể giải quyết. Các định dạng dữ liệu hiện đại như Parquet, Avro, hoặc thậm chí JSON tự động xử lý hầu hết các vấn đề này. Nhưng CSV vẫn tồn tại bởi vì nó phổ biến, và chúng ta đang mắc kẹt với những hạn chế của nó. Chìa khóa không phải là bỏ CSV—điều đó là không thực tế—mà là phát triển các quy trình làm việc làm giảm bớt nỗi đau khi làm việc với nó.
Cách tiếp cận ba giai đoạn để làm sạch dữ liệu nhanh hơn
Sau nhiều năm thử nghiệm và sai sót, tôi đã quyết định áp dụng cách tiếp cận ba giai đoạn giúp giảm thời gian làm sạch một cách nhất quán từ 50-60%. Các giai đoạn là: Phân loại, Chuyển đổi, và Xác thực. Mỗi giai đoạn có mục tiêu cụ thể và sử dụng các công cụ cụ thể, và bỏ qua bất kỳ giai đoạn nào cũng dẫn đến những vấn đề ở giai đoạn sau.
| Cách tiếp cận | Đầu tư thời gian | Khả năng mở rộng | Tỷ lệ lỗi |
|---|---|---|---|
| Làm sạch bằng Excel thủ công | 8-10 giờ cho mỗi bộ dữ liệu | Thấp - đòi hỏi phải làm lại hoàn toàn mỗi khi | Cao - dễ mắc lỗi do con người |
| Python Scripts (Pandas) | 4-6 giờ ban đầu, 1-2 giờ cho mỗi lần tái sử dụng | Tốt - có thể tái sử dụng với những điều chỉnh | Trung bình - phụ thuộc vào chất lượng script |
| Công cụ CSV chuyên dụng | 1-2 giờ cho mỗi bộ dữ liệu | Tuyệt vời - tự động hóa tích hợp | Thấp - thực hiện quy tắc nhất quán |
| Tự động hóa quy trình dữ liệu | 20-40 giờ thiết lập, vài phút cho mỗi lần chạy | Tuyệt vời - hoàn toàn tự động | Rất thấp - đã được kiểm tra và xác thực |
Giai đoạn 1: Phân loại (10-15% tổng thời gian)
Phân loại là hiểu những gì bạn đang đối mặt trước khi bạn bắt đầu thực hiện thay đổi. Đây là nơi hầu hết mọi người sai lầm—họ lao ngay vào việc làm sạch mà không hiểu đầy đủ phạm vi của các vấn đề. Nó giống như một bác sĩ phẫu thuật thực hiện ca phẫu thuật mà không xem xét các bức X-quang trước.
Trong giai đoạn phân loại, tôi sẽ đặt những câu hỏi như: Có bao nhiêu hàng? Có bao nhiêu cột? Các kiểu dữ liệu là gì? Có bản sao nào không? Tỷ lệ null trên mỗi cột là bao nhiêu? Có diễn biến rõ ràng nào không? Mã hóa là gì? Dấu phân tách thực sự là gì? Tôi sử dụng các công cụ lập hồ sơ tự động cho việc này—kiểm tra thủ công các tệp lớn thật sự lãng phí thời gian. Một công cụ lập hồ sơ tốt có thể phân tích một tệp CSV có một triệu hàng trong vài giây và cung cấp cho bạn một cái nhìn tổng quan.