Gelişmiş filtreleme ve analiz
TechCorp, liderlik gelişimi için yüksek potansiyelli çalışanları belirlemek istiyor: 30 yaşın altındaki ve şimdiden Mid veya Senior düzey maaş alan çalışanlar. Bunun için aykırı değerleri kaldırman, sayısal verilerden kategorik maaş dereceleri oluşturman ve sonra birden fazla filtre koşulunu birleştirmen gerekiyor. Bu teknikler, basit filtrelerin cevaplayamadığı gerçek iş sorularını ele alır.
Table, Selection ve StringColumn sınıfları senin için içe aktarıldı.
Bu egzersiz, kursun bir parçasıdır
Java'da Veri İçe Aktarma
Egzersiz talimatları
- Aykırı değerleri kaldır (maaş < $40K veya > $250K).
- Filtrelemeden sonra kaldırılan satırları say.
- Maaşları
"Junior","Mid"ve"Senior"derecelerine eşle. - 30 yaş altındaki
"Mid"/"Senior"dereceleri için filtrele.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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));
}
}