Kom igångKom igång gratis

Avancerad filtrering och analys

TechCorp vill identifiera medarbetare med hög potential för ledarskapsutbildning: unga anställda (under 30 år) som redan har löner på Mid- eller Senior-nivå. Det här kräver att du tar bort extremvärden, skapar kategoriska lönegraderingar från numeriska data och kombinerar flera filtervillkor. Dessa tekniker hanterar verkliga affärsfrågor som enkla filter inte klarar av.

Klasserna Table, Selection och StringColumn har redan importerats.

Den här övningen är en del av kursen

Importera data i Java

Visa kurs

Övningsinstruktioner

  • Ta bort extremvärden (lön < 40 000 \( eller > 250 000 \)).
  • Räkna antalet borttagna rader efter filtreringen.
  • Mappa löner till graderingarna "Junior", "Mid" och "Senior".
  • Filtrera fram "Mid"/"Senior"-graderingar för anställda under 30 år.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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

	}
}
Redigera och kör kod