Bài học này cung cấp kiến thức về quy trình phân tích dữ liệu để giúp các BI Analyst và Data Analyst (mà sau đây gọi chung là Analyst) cũng như nhưng vị trí khác mà cần thực hiện công việc phân tích dữ liệu có một mô hình và danh sách những việc cần làm, cần lưu ý để tham khảo và có một cách tiếp cận có hệ thống, bài bản hơn khi phân tích.
Có nhiều mô hình khác nhau về quy trình phân tích dữ liệu được đưa ra bởi những đơn vị có tên tuổi, tuy nhiên cá nhân tôi thích mô hình 6 giai đoạn phân tích của Google, bao gồm:
Dựa trên kinh nghiệm của bản thân, tôi cho rằng ta không nên áp dụng quy trình này một cách cứng nhắc theo kiểu làm từng bước từ 1 -> 6 và dừng lại. Thay vào đó, một số bước sẽ cần phải được lặp lại nhiều hơn 1 lần tuỳ thuộc vào tính chất và mức độ phức tạp của phân tích, và thậm chí cả quy trình này cũng có thể cần được lặp lại sau một thời gian nhất định với cùng một bài toán phân tích vì các dữ liệu về kinh doanh, vận hành của doanh nghiệp đã bị thay đổi theo thời gian.
Trong bài học này, tôi sẽ sử dụng một quy trình phân tích như biểu đồ dưới đây:
Điều đầu tiên cần phải làm trước khi thực hiện bất cứ phân tích nào là phải xác định rõ vấn đề mà bạn hoặc đơn vị, doanh nghiệp của bạn đang muốn giải quyết. Trong giai đoạn này, ta thường phải làm một số việc sau:
Trao đổi và xác định vấn đề mà doanh nghiệp đang muốn giải quyết (identify the business problem) và bối cảnh chung của doanh nghiệp (context) xung quanh vấn đề đó. Điều này rất quan trọng vì nó giúp cho Analyst có được cái nhìn tổng quan, từ đó giúp họ xác định phạm vi phân tích và hình thành các câu hỏi và giả thuyết tốt hơn, hoặc thậm chí là lật ngược lại hoặc chuyển hướng vấn đề mà doanh nghiệp đang muốn giải quyết.
Trao đổi và xác định kì vọng của các bên liên quan về kết quả phân tích và cách họ dự định sẽ sử dụng kết quả đó để giải quyết vấn đề của doanh nghiệp. Kì vọng về kết quả phân tích thường bao gồm về hình thức (một báo cáo hay nhiều báo cáo, hay dashboard, dưới dạng pdf hay là báo cáo power bi, hay phải được triển khai thành dạng web hoặc app di động, v.v.), về nội dung (các chỉ tiêu phân tích cần thể hiện, các giả thuyết cần chứng minh, v.v.), về mức độ ưu tiên và thời gian cần hoàn thành, và đôi khi là cả về mức độ chỉn chu (ví dụ đó là một báo cáo gửi cho lãnh đạo cấp cao hoặc báo cáo tuân thủ gửi cho các đơn vị quản lý nhà nước) và độ chính xác (ví dụ với yêu cầu xây dựng mô hình ML)
Trao đổi và xác định những bên liên quan và những nguồn lực (nhân sự, tài chính, công cụ, …) được sử dụng để phục vụ quá trình phân tích cũng như triển khai kết quả phân tích. Điều này giúp Analyst hiểu rõ được các bên liên quan cũng như vai trò, trách nhiệm của từng bên, và các nguồn lực về tài chính và công cụ được phép sử dụng, từ đó có kế hoạch triển khai phân tích phù hợp.
Sau khi đã xác định rõ vấn đề và các yêu cầu, nguồn lực cho việc phân tích, ta cần chuẩn bị dữ liệu để phân tích. Giai đoạn này thường bao gồm một số việc sau:
Tìm hiểu và xác định những dữ liệu cần sử dụng cho việc phân tích. Dựa vào các thông tin đã xác định được ở giai đoạn “Ask” mà ta sẽ biết là việc phân tích cần sử dụng những dữ liệu gì.
Xác định cụ thể các tập dữ liệu cần sử dụng, bao gồm nơi chúng được lưu trữ (ví dụ: với relational database thì là tên server, schema, bảng, cột; với file json thì là nơi lưu trữ file và schema definition; …), kiểu dữ liệu (có cấu trúc hay bán cấu trúc, phi cấu trúc), định dạng lưu trữ, cách thức và công cụ để truy cập dữ liệu, kiểm tra phân quyền truy cập dữ liệu và các quy trình cần tuân thủ khi truy cập và sử dụng dữ liệu (đặc biệt là về bảo mật dữ liệu khi sử dụng)
Sau khi đã chuẩn bị xong dữ liệu, Analyst cần xử lý dữ liệu trước khi có thể thực hiện phân tích. Giai đoạn này thường bao gồm một số việc sau:
Thực hiện data profiling. Đây là việc kiểm tra các khía cạnh cơ bản và quan trọng của tập dữ liệu để hiểu hơn và dữ liệu và phát hiện ra các vấn đề dữ liệu. Data profiling với dữ liệu có cấu trúc thường bao gồm:
Nhìn dữ liệu bằng mắt thường để cảm nhận về dữ liệu và liên kết với kiến thức nền về hoạt động kinh doanh, vận hành của doanh nghiệp mà Analyst biết
Kiểm tra số dòng và số cột
Kiểm tra kiểu dữ liệu của các cột
Kiểm tra mức độ chi tiết (grain of table/dataframe) hay cũng có nghĩa là kiểm tra khoá chính (cả natural key và surrogate key) của bảng/dataframe và xác định các bản ghi bị trùng lặp (duplicates)
Kiểm tra dữ liệu bị thiếu (missing values - NULL/NA/NaN/…)
Kiểm tra phân phối dữ liệu của các cột dạng số (numerical data)
Kiểm tra các giá trị và tần suất xuất hiện của các giá trị đó (check distinct values and their frequency) với các cột dạng dạng hạng mục (categorical data)
Kiểm tra lỗi đánh máy với các cột dạng chữ (nếu số lượng ký tự ít) và lỗi encoding (có các ký tự đặc biệt nhưng khi được lưu trữ trong bảng/dataframe thì encoding không khớp nên không được thể hiện chính xác
Trong trường hợp ta kết nối với bảng được lưu trữ trong cơ sở dữ liệu quan hệ để thực hiện các báo cáo tự động (chứ không phải chỉ kéo dữ liệu về 1 lần để làm phân tích là xong), ta cần lưu ý kiểm tra cả cách dữ liệu trong bảng được lưu trữ và cập nhật (vd: fullload hay incremental load)
Làm sạch dữ liệu (data cleansing/cleaning) và biến đổi dữ liệu (data transformation). Sau khi đã thực hiện data profiling và xác định được các vấn đề của tập dữ liệu, Analyst cần tiến hành làm sạch và biến đổi dữ liệu để việc phân tích được chính xác và dễ dàng hơn. Việc này thường bao gồm:
Loại bỏ bớt các dòng dữ liệu và cột dữ liệu không cần thiết
Đổi tên cột dữ liệu để dễ hiểu hơn hoặc để xử lý trường hợp tên cột có dấu cách hoặc các kí tự đặc biệt, sẽ dễ gây lỗi sau này
Biến đổi định dạng dữ liệu, ví dụ như bién đổi ngày tháng và thời gian (để phục vụ việc nhóm dữ liệu và phân tích theo giờ hay theo ngày, tháng, quý, năm, …)
Xử lý các bản ghi bị trùng lặp
Xử lý các giá trị bị thiếu
Xử lý các giá trị ngoại lệ (outliers)
Xử lý các lỗi đánh máy trong dữ liệu hạng mục (categorial data) hoặc dữ liệu kiểu chữ (free text)
Xử lý việc dữ liệu không đồng nhất giữa các tập dữ liệu
Tạo thêm các cột dữ liệu kiểu hạng mục mới dựa trên các cột có sẵn hoặc chỉnh sửa trên chính cột có sẵn (ví dụ gộp nhóm khách hàng VIP 1, VIP 2, và VIP 3 lại thành 1 nhóm VIP, hay gộp các giá trị ““,” “,”khong co”, “N/A”, … thành một giá trị duy nhất gọi là “Unknown”, …)
…
Note: Khi tìm hiểu về phân tích dữ liệu, các bạn có thể sẽ bắt gặp cụm từ “data wrangling”. Thuật ngữ này tuy có một vài định nghĩa hơi khác nhau nhưng về bản chất chính là các bước của giai đoạn “Process” đã được nêu bên trên.
Sau khi được xử lý thì dữ liệu đã sẵn sàng cho việc phân tích. Analyst thực hiện phân tích dữ liệu và trình bày kết quả dưới định dạng phù hợp.
Trong quá trình thực hiện xử lý dữ liệu và phân tích dữ liệu, Analyst có thể phát hiện ra là cần phải sử dụng thêm một vài loại, tập dữ liệu khác. Khi đó ta quay lại và lại thực hiện bước “Prepare”.
Đây là giai đoạn cuối cùng trong quy trình nhưng không kém phần quan trọng. Tại đây, Analyst sẽ dựa trên những insights trong phân tích mà đưa ra những đề xuất của mình để giúp giải quyết vấn đề của doanh nghiệp. Tôi cho rằng giai đoạn này còn bao gồm cả việc follow up với các bên liên quan sau khi đề xuất/giải pháp của mình được phê duyệt và triển khai, theo dõi và đo lường kết quả triển khai của giải pháp đó. Có nhu vậy thì Analyst mới thực sự hiểu được giá trị của phân tích và đề xuất của mình, cũng như biết được thông tin về thực tế triển khai đề điều chỉnh, làm cho giải pháp trở nên tốt hơn nữa.