高级数据操作技巧

Java 中的数据导入

Anthony Markham

VP Quant Developer

列的删除与添加

  • .drop() 删除不需要的列
  • .addColumns() 添加预计算或分类列
    • 行数必须相同 ❗
// 删除指定列
Table cleaned = dataTable.drop("TempID", "Notes");

// 添加两个新列 StringColumn statusCol = StringColumn.create("Status", "Active", "Inactive", "Active"); IntColumn priorityCol = IntColumn.create("Priority", 1, 2, 3); Table enhanced = dataTable.addColumns(statusCol, priorityCol);
Java 中的数据导入

使用 .dropWhere() 过滤行

  • 删除匹配条件的行
  • 使用 Selection 指定筛选条件
// 创建筛选条件
Selection outliers = dataTable.doubleColumn("Value")
    .isLessThan(lowerBound)
    .or(dataTable.doubleColumn("Value")
        .isGreaterThan(upperBound));

// 删除满足条件的行 Table cleanedData = dataTable.dropWhere(outliers);
Java 中的数据导入

行计数

  • .rowCount() - 统计表的行数
// 比较行数
System.out.println("Original rows: " + dataTable.rowCount());
System.out.println("After dropping outliers: " + 
    cleanedData.rowCount());
Original rows: 100
After dropping outliers: 95
Java 中的数据导入

布尔筛选

  • 支持 andornot 方法
// 复杂布尔筛选
Selection techHighPaid = dataTable.stringColumn("Department")
    .isEqualTo("Technology")
    .and(dataTable.doubleColumn("Salary")
        .isGreaterThan(100000));

// 取反选择(NOT) Selection nonTechOrLowPaid = techHighPaid.not();
Java 中的数据导入

使用 .map() 转换

  • 对列值应用函数进行转换
  • 支持 lambda 表达式,代码更易读
// 用预定义函数转换整列
StringColumn upperNames = dataTable.stringColumn("Name").map(s -> s.toUpperCase());
// 转换列中的值
DoubleColumn prices = dataTable.doubleColumn("Price");
DoubleColumn discounted = prices.map(price -> price * 0.9);

// 设置名称并添加列 discounted.setName("DiscountedPrice"); Table withDiscounts = dataTable.addColumns(discounted);
Java 中的数据导入

总结

  • .drop() - 从表中删除列
  • .dropWhere() - 删除满足条件的行
  • .addColumns() - 向表添加新列
  • .map() - 转换列值
// 核心高级操作方法
dataTable.drop("TemporaryID");              
dataTable.dropWhere(selection);             
dataTable.addColumns(newColumn);            
doubleCol.map(value -> value * 2);
Java 中的数据导入

Ayo berlatih!

Java 中的数据导入

Preparing Video For Download...