Filtrage avancé et analyse
TechCorp veut repérer des employé·e·s à fort potentiel pour un parcours de leadership : de jeunes employé·e·s (moins de 30 ans) qui touchent déjà un salaire de niveau Mid ou Senior. Pour y arriver, il faut retirer les valeurs aberrantes, créer des catégories de salaire à partir de données numériques, puis combiner plusieurs conditions de filtrage. Ces techniques permettent de traiter de vraies questions d'affaires auxquelles de simples filtres ne suffisent pas.
Les classes Table, Selection et StringColumn ont été importées pour vous.
Cette activité fait partie du cours
Importer des données en Java
Instructions de l’exercice
- Retirez les valeurs aberrantes (salaire < 40 000 \( ou > 250 000 \)).
- Comptez les lignes retirées après le filtrage.
- Associez les salaires aux catégories
"Junior","Mid"et"Senior". - Filtrez pour les catégories
"Mid"/"Senior"chez les moins de 30 ans.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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));
}
}