Aan de slagGa gratis aan de slag

Geavanceerd filteren en analyseren

TechCorp wil high-potential medewerkers identificeren voor leiderschapsontwikkeling: jonge medewerkers (onder 30) die nu al Mid- of Senior-level salarissen verdienen. Daarvoor moet je uitschieters verwijderen, categorische salarisschalen maken op basis van numerieke data, en vervolgens meerdere filtercondities combineren. Met deze technieken kun je echte businessvragen aanpakken die je met eenvoudige filters niet oplost.

De klassen Table, Selection en StringColumn zijn alvast voor je geïmporteerd.

Deze oefening maakt deel uit van de cursus

Data importeren in Java

Cursus bekijken

Oefeninstructies

  • Verwijder uitschieters (salaris < $40K of > $250K).
  • Tel hoeveel rijen er na het filteren zijn verwijderd.
  • Koppel salarissen aan de schalen "Junior", "Mid" en "Senior".
  • Filter op "Mid"/"Senior" én jonger dan 30 jaar.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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));

	}
}
Code bewerken en uitvoeren