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