Penyaringan lanjutan dan analisis
TechCorp ingin mengidentifikasi karyawan berpotensi tinggi untuk pengembangan kepemimpinan: karyawan muda (di bawah 30 tahun) yang sudah bergaji tingkat Mid atau Senior. Ini memerlukan penghapusan outlier, pembuatan kategori tingkat gaji dari data numerik, lalu menggabungkan beberapa kondisi filter. Teknik-teknik ini menjawab pertanyaan bisnis nyata yang tidak dapat ditangani oleh filter sederhana.
Kelas Table, Selection, dan StringColumn telah diimpor untuk Anda.
Latihan ini adalah bagian dari kursus
Mengimpor Data di Java
Petunjuk latihan
- Hapus outlier (gaji < $40K atau > $250K).
- Hitung jumlah baris yang dihapus setelah pemfilteran.
- Peta gaji ke tingkat
"Junior","Mid", dan"Senior". - Filter untuk tingkat
"Mid"/"Senior"dengan usia di bawah 30 tahun.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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));
}
}