Advanced filtering and analysis
TechCorp wants to identify high-potential employees for leadership development: young employees (under 30) already earning Mid or Senior-level salaries. This requires removing outliers, creating categorical salary grades from numeric data, and then combining multiple filter conditions. These techniques handle real business questions that simple filters can't answer.
The Table, Selection, and StringColumn classes have been imported for you.
Bu egzersiz
Importing Data in Java
kursunun bir parçasıdırEgzersiz talimatları
- Remove outliers (salary < $40K or > $250K).
- Count rows removed after filtering.
- Map salaries to
"Junior","Mid", and"Senior"grades. - Filter for
"Mid"/"Senior"grades under age 30.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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));
}
}