Bắt đầu ngayBắt đầu miễn phí

Lọc nâng cao và phân tích

TechCorp muốn xác định các nhân viên tiềm năng cao cho chương trình phát triển lãnh đạo: những người trẻ (dưới 30 tuổi) đã nhận mức lương Mid hoặc Senior. Việc này cần loại bỏ giá trị ngoại lai, tạo hạng lương dạng phân loại từ dữ liệu số, rồi kết hợp nhiều điều kiện lọc. Các kỹ thuật này xử lý được bài toán kinh doanh thực tế mà các bộ lọc đơn giản không thể giải quyết.

Các lớp Table, Selection, và StringColumn đã được nhập sẵn cho bạn.

Bài tập này là một phần của khóa học

Nhập dữ liệu trong Java

Xem khóa học

Hướng dẫn bài tập

  • Loại bỏ giá trị ngoại lai (lương < $40K hoặc > $250K).
  • Đếm số hàng bị xóa sau khi lọc.
  • Ánh xạ lương sang các hạng "Junior", "Mid", và "Senior".
  • Lọc các hạng "Mid"/"Senior" có tuổi dưới 30.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

public class DataExploration {
    public static void main(String[] args) {
    
        // Start with the high earners table from previous exercises
        Table employees = Table.read().csv("employees.csv");

        // Remove outliers (salary < $40K or > $250K)
        Selection outliers = employees.intColumn("Salary").isLessThan(____)
            .or(employees.intColumn("Salary").isGreaterThan(____));
        Table cleanedData = employees.____(outliers);
        
        // Count rows removed after filtering
        System.out.println("Employees after removing outliers: " + (employees.____() - cleanedData.____()));
        
        // Map salaries to Junior, Mid, and Senior grades
		StringColumn salaryGroup = cleanedData.intColumn("Salary").map(
    	salary -> {
        	if (salary < 100000) return "____";
        	else if (salary < 200000) return "Mid";
        	else if (salary >= 200000) return "____";
        	else return "Error";
    	},StringColumn::create).setName("SalaryGrade");
        cleanedData = cleanedData.addColumns(salaryGroup);

        // Filter for Mid/Senior grades under age 30
        Selection highPotential = cleanedData.stringColumn("____")
            .isEqualTo("Mid")
            .or(cleanedData.stringColumn("SalaryGrade").isEqualTo("Senior"))
            .and(cleanedData.intColumn("____").isLessThan(30));

        Table highPotentialEmployees = cleanedData.where(____);
        
        System.out.println(highPotentialEmployees.rowCount());
        System.out.println(highPotentialEmployees.first(5));

	}
}
Chỉnh sửa và Chạy Mã