ÎncepețiÎncepe gratuit

Filtrare avansată și analiză

TechCorp dorește să identifice angajații cu potențial ridicat pentru programe de dezvoltare a liderilor: angajați tineri (sub 30 de ani) care câștigă deja salarii de nivel Mid sau Senior. Acest lucru necesită eliminarea valorilor extreme, crearea unor categorii de salariu pe baza datelor numerice și combinarea mai multor condiții de filtrare. Aceste tehnici răspund unor întrebări reale de business la care filtrele simple nu pot oferi un răspuns.

Clasele Table, Selection și StringColumn au fost deja importate pentru tine.

Acest exercițiu face parte din cursul

Importul datelor în Java

Vezi cursul

Instrucțiuni pentru exercițiu

  • Elimină valorile extreme (salariu < 40K\( sau > 250K\)).
  • Numără rândurile eliminate după filtrare.
  • Atribuie salariilor categoriile "Junior", "Mid" și "Senior".
  • Filtrează pentru categoriile "Mid"/"Senior" cu vârsta sub 30 de ani.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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

	}
}
Editează și rulează codul