始める無料で始める

高度なフィルタリングと分析

TechCorp は、リーダーシップ育成プログラムへの参加候補として、将来性の高い従業員を特定しようとしています。具体的には、30歳未満でありながら、すでに中級(Mid)または上級(Senior)レベルの給与を得ている従業員です。この分析では、外れ値の除去、数値データからカテゴリ別給与グレードの作成、そして複数のフィルター条件の組み合わせが必要になります。単純なフィルタリングでは対応できない、実際のビジネス課題を解決する手法を学びましょう。

TableSelectionStringColumn クラスはあらかじめインポートされています。

この演習はコースの一部です

Java でのデータインポート

コースを見る

演習の手順

  • 外れ値(給与が $40K 未満または $250K 超)を除去します。
  • フィルタリング後に削除された行数を数えます。
  • 給与を "Junior""Mid""Senior" のグレードに対応付けます。
  • 年齢が30歳未満で "Mid" または "Senior" グレードに該当する従業員を絞り込みます。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

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

	}
}
コードを編集して実行