CommencerCommencer gratuitement

Filtrage avancé et analyse

TechCorp souhaite identifier des employés à fort potentiel pour un programme de leadership : des jeunes (moins de 30 ans) qui perçoivent déjà un salaire de niveau Mid ou Senior. Pour cela, il faut supprimer les valeurs aberrantes, créer des catégories de salaires à partir de données numériques, puis combiner plusieurs conditions de filtrage. Ces techniques répondent à des besoins métier concrets que de simples filtres ne couvrent pas.

Les classes Table, Selection et StringColumn ont été importées pour vous.

Cet exercice fait partie du cours

Importer des données en Java

Afficher le cours

Instructions

  • Supprimez les valeurs aberrantes (salaire < 40 000 \( ou > 250 000 \)).
  • Comptez le nombre de lignes supprimées après filtrage.
  • Faites correspondre les salaires aux niveaux "Junior", "Mid" et "Senior".
  • Filtrez les niveaux "Mid"/"Senior" pour les moins de 30 ans.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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

	}
}
Modifier et exécuter le code