Java 数据清洗
Dennis Lee
Software Engineer
// 从质量评估开始 DescriptiveStatistics stats = new DescriptiveStatistics(values); System.out.println("Mean: " + stats.getMean());// 到字符串转换 String clean = text.trim().toLowerCase();// 到范围校验 boolean isValid = Range.between(0, 100).contains(value);// 到表格清理 Table cleaned = data.where(sales.isGreaterThan(1000));
// 检查统计量 double mean = stats.getMean();// 检测空值 boolean isMissing = Optional.ofNullable(value).isEmpty();// 校验类型 boolean isValidDate = LocalDate.parse(dateStr, formatter);
// 规范化字符串(如移除非字母) String cleaned = dirtyName.replaceAll("[^a-zA-Z\\s]", "");// 标准化类别 String standard = categoryMap.getOrDefault(value, "Other");// 转换日期 LocalDateTime datetime = LocalDateTime.parse(dateStr, formatter);
// 检查范围 boolean inRange = Range.between(min, max).contains(value);// 校验模式 boolean matches = Pattern.matches(pattern, text);// 强制约束 Set<ConstraintViolation<Data>> violations = validator.validate(data);
for (String colName : data.columnNames()) { // 检查缺失值 System.out.println(data.column(colName).countMissing()); }StringColumn cleaned = names.map(String::toLowerCase) // 清理文本 .setName("Clean_Names"); // 命名新列Table summary = data .where(sales.isGreaterThan(1000)) // 过滤行 .summarize("Sales", mean) // 汇总数据 .by("Category"); // 分组结果
Java 数据清洗