Data Portfolio Project #01: Tối ưu Chiến lược Quản lý Nhân Sự: Phân Tích Tỷ Lệ Nghỉ Việc & Xu Hướng Biến Động Nhân Sự
Tình hình là dạo gần đây mình bắt đầu phải làm project cá nhân để cho vào portfolio :))) xong mình thấy khó điên luôn :)))) học data là một chuyện nhưng mà làm sao để áp dụng được mấy cái mình đã học vào một project thực tế lại là một chuyện khác.
Mình đoán là nhiều bạn cũng đang loay hoay như mình :)))) Vì vậy mình quyết định tạo ra series Data Portfolio Projects này để sharing với mọi người về quá trình “đi giải đố” của mình. Hy vọng sẽ hữu ích cho bạn :)))
Project đầu tiên trong series này là một project liên quan đến phân tích tình hình nhân sự. Bạn có thể xem thêm về Project này tại link GitHub.
Tóm tắt ngắn gọn, Project này nhằm phân tích tình hình nhân sự tại một doanh nghiệp với mục tiêu chính là giúp ban lãnh đạo nhận diện xu hướng nhân sự, đánh giá mức độ ổn định của lực lượng lao động và đề xuất các giải pháp nhằm cải thiện chiến lược quản lý nhân sự tại doanh nghiệp.
Và sau đây là cách tiếp cận của mình với bài toán này:
Bước 1. Xác định vấn đề cần phân tích
Tìm hiểu về các khía cạnh có thể phân tích với bài toán về nhân sự
Vì mình không có bất cứ kinh nghiệm gì trong mảng nhân sự cả, nên trước hết mình sẽ cần phải tìm hiểu xem đối với một bài toán phân tích về tình hình nhân sự mình có thể khai thác các khía cạnh nào. Bạn có thể dựa vào hiểu biết cá nhân, hỏi bạn bè làm trong mảng nhân sự, tìm kiếm trên Google,… ở đây mình tận dụng luôn ChatGPT vì nó có khả năng tổng hợp thông tin khá tốt.
Oke vậy là nhờ ChatGPT mình đã nắm được sơ sơ khi phân tích nhân sự mình sẽ có thể phân tích theo các khía cạnh:
Tổng quan nhân sự
Tỷ lệ nghỉ việc
Thâm niên làm việc
Tuyển dụng
Năng suất làm việc
Phúc lợi & chế độ đãi ngộ
Đào tạo & phát triển nhân sự
…
Hiểu dữ liệu đang có có thể khai thác được những gì
Bước tiếp theo chính là đi tìm hiểu từng field trong dataset có ý nghĩa là gì, và với data như vậy thì có thể sử dụng để phân tích khía cạnh nào của bài toán về phân tích tình hình nhân sự.
Và đây là một vài field quan trọng trong dataset này mà mình dùng để phân tích:
employee_code: Mã nhân viên
employee_work_date: Ngày nhân sự bắt đầu làm việc
statement_type: Tình trạng hợp đồng của nhân sự (Ví dụ: Chấm dứt HĐLĐ, Gia hạn hợp đồng,…)
statement_name: Chi tiết tình trạng hợp đồng (Ví dụ: Người lao động đơn phương)
work_location: Vị trí làm việc (Ví dụ: Hà Nội, TP.HCM)
PT: Tên công ty con nhân sự làm việc
CB: Level của nhân sự (Ví dụ: Chuyên viên, Giám đốc,…)
NG: Vị trí nhân sự làm việc (Ví dụ: Chuyên gia chạy số, Chuyên gia phần mềm,…)
KH200: Quản lý trực tiếp của nhân sự (Ví dụ: TRANGTTK, TUANPM,…)
Từ dữ liệu đã có mình xác định được báo cáo của mình sẽ tập trung vào phân tích hai khía cạnh:
Tổng quan & cơ cấu nhân sự
Tỷ lệ nghỉ việc của nhân sự
Vẽ mindmap chi tiết
Sau đó mình vẽ mindmap chi tiết để xác định rõ hơn phần tổng quan mình sẽ đi phân tích những gì, phần chi tiết tình hình nghỉ việc của nhân sự sẽ đi phân tích những gì. Bước này vừa là để mình có định hướng rõ ràng hơn cho phần phân tích, vừa là outline để mình thiết kế dashboard sau này.
Bước 2. Import dữ liệu vào Power BI & tính toán các chỉ số (metrics)
Sau khi đã có định hướng phân tích, mình sẽ đi tính toán các chỉ số & visualize dữ liệu theo từng nhánh trong mindmap vừa vẽ để xem có insight gì đáng lưu ý hay không.
Ở project này mình sử dụng Power BI để trực quan hóa dữ liệu. Mình tiến hành import file Data vào và được kết quả như hình dưới đây:
Vì data này đã được clean sẵn, không nhiều vấn đề nên mình chỉ việc tính toán các chỉ số để phục vụ cho phần trực quan sau này. Một vài chỉ số mà mình đã tính toán thêm sử dụng DAX:
Thời gian làm việc của nhân sự:
WorkingDay =
VAR DaysWorked = DATEDIFF(HR_DATA[employee_work_date], HR_DATA[statement_valid_date], DAY)
RETURN
IF( ISBLANK(DaysWorked) || DaysWorked < 0, 0, DaysWorked)
YearWorking =
VAR YearsWorked = DIVIDE(HR_DATA[WorkingDay], 365, 0) // Chuyển số ngày thành năm
RETURN
SWITCH(
TRUE(),
YearsWorked < 0.2, "< 2 tháng",
YearsWorked < 1, "< 1 năm",
YearsWorked <= 3, "1 - 3 năm",
YearsWorked <= 5, "3 - 5 năm",
YearsWorked > 5, "> 5 năm",
"Không xác định"
)
Tổng số nhân viên:
Total Employee = COUNT(HR_DATA[employee_code])
Số nhân viên nghỉ việc:
TerminatedEmployees =
CALCULATE(
COUNT(HR_DATA[employee_code]),
HR_DATA[statement_type] = "ZG - Chấm dứt HĐLĐ"
)
Số nhân viên nghỉ việc trong khoảng thời gian thử việc:
TerminatedUnder2Months =
CALCULATE(
COUNT(HR_DATA[employee_code]),
HR_DATA[statement_type] = "ZG - Chấm dứt HĐLĐ",
HR_DATA[YearWorking] = "< 2 tháng"
)
Số nhân viên hiện tại:
Current Employees = [Total Employee]-[TerminatedEmployees]
Tỷ lệ nhân viên nghỉ việc:
Terminated Rate = DIVIDE([TerminatedEmployees],[Total Employee])
Tỷ lệ nhân viên nghỉ việc trước khi kết thúc thử việc:
Terminated Rate (under 2 month) = DIVIDE([TerminatedUnder2Months],[Total Employee])
Bước 3. Trực quan hóa dữ liệu & Đọc số để tìm kiếm Insights
Sau khi đã có đủ data & các metrics cần thiết, mình tiến hành trực quan hóa dữ liệu với Power BI.
Quá trình trực quan hóa dữ liệu cũng là lúc mà mình tìm ra insight từ dữ liệu để cho vào báo cáo, chọn ra chart nào nên giữ lại trong dashboard, vì vậy mà để tránh sót ý mình thường sẽ note các insights tìm được ra note thế này để sau đấy sẽ sắp xếp lại.



Một note nhỏ từ anh trainer dạy mình là trong một bản báo cáo nên tìm ra được tối thiểu 6 insights bao gồm: 3 insights tổng quan + 3 insights detail.
Bước 4. Xây dựng Dashboard & Trình bày Report
Xây dựng Dashboard
Sau bước trực quan hóa dữ liệu ở trên mình có một Dashboard thô như hình dưới đây.
Dashboard này dù vẫn có thể sử dụng để cho vào Portfolio được, nhưng cá nhân mình thấy nó hơi thiếu chuyên nghiệp chút, nên mình đã custom lại các charts này theo cùng một theme để làm cho đồng bộ & đẹp mắt hơn. Và đây là kết quả.
Dashboard này bao gồm 3 tabs chia theo 2 phần:
Báo cáo tổng quan tình hình nhân sự:
Báo cáo chi tiết về tình hình nghỉ việc:
Xem chi tiết Dashboard tại đây
Trình bày các Insights tìm được thành một Report hoàn chỉnh
Và bước cuối cùng là trình bày insight tìm được thành một report hoàn chỉnh. Dưới đây là hình ảnh một vài trang trong report, bạn có thể xem report full tại đây.




Hết rồi :))))
Vậy là mình vừa trình bày với mọi người về Project đầu tiên của mình :)))) nhìn thì ngắn vậy thôi chứ mình làm cũng mất 2 tuần đấy :)))) một phần cũng là do ban ngày mình bận làm task công ty tối mới mở ra được, nếu bạn có nhiều thời gian hơn chắc sẽ làm nhanh hơn mình chút :)))
Anw đó là Project đầu tiên, mình sẽ tiếp tục đăng các Project khác của mình lên Substack trong khoảng thời gian sắp tới, vì vậy nếu bạn thấy bài viết này hữu ích thì hãy subscribe để nhận được email về các bài post mới nhất!
Cảm ơn bạn đã chia sẻ. Bài viết rất hữu ích với một người đang quan tâm tìm hiểu về ngành business analyst như mình. Rất mong chờ những bài viết khác của bạn về hành trình tự học này.