Xác thực phạm vi

Làm sạch dữ liệu bằng Java

Dennis Lee

Software Engineer

Bộ dữ liệu doanh số sô-cô-la

  • Làm việc với bộ dữ liệu doanh số sô-cô-la trong suốt chương
  • Chỉnh sửa một số cột như số tiền và ngày để minh họa xác thực dữ liệu

 

Nhân viên bán hàng Quốc gia Sản phẩm Ngày Số tiền Hộp đã giao
James Rudeforth UK Mint Chip Choco 4-Jan-22 $5,320 180
Van Tuxwell India 85% Dark Bars 1-Aug-22 $7,896 94
Gigi Bohling India Peanut Butter Cubes 7-Jul-22 $4,501 91
Jan Morforth Australia Peanut Butter Cubes 27-Apr-22 $12,726 342
Jehu Fischer UK Peanut Butter Cubes 24-Feb-22 $13,685 184
Làm sạch dữ liệu bằng Java

Vì sao cần xác thực phạm vi

// Chúng ta đã trích xuất các số tiền và ngày bán này từ bộ dữ liệu
List<Double> salesAmounts = Arrays.asList(5320.0, 7896.0, 4501.0,
                                          12726.0, 13685.0);
List<String> saleDates = Arrays.asList("4-Jan-22", "1-Aug-22", "7-Jul-22", 
                                       "27-Apr-22", "24-Feb-22");

System.out.println("Sales amounts: " + salesAmounts);
System.out.println("Sale dates: " + saleDates);
Sales amounts: [5320.0, 7896.0, 4501.0, 12726.0, 13685.0]
Sale dates: [4-Jan-22, 1-Aug-22, 7-Jul-22, 27-Apr-22, 24-Feb-22]
Làm sạch dữ liệu bằng Java

Tìm ranh giới phạm vi

// Lấy doanh số tối thiểu
Double minSale = Collections.min(salesAmounts);
// Lấy doanh số tối đa
Double maxSale = Collections.max(salesAmounts);

System.out.println("Range: $" + minSale + " - $" + maxSale);
Range: $4501.0 - $13685.0
Làm sạch dữ liệu bằng Java

Thiết lập phạm vi hợp lệ

// Số tiền bán không được nhỏ hơn 0.0
Double lowerThreshold = 0.0;
// Số tiền bán không được lớn hơn 15000.0
Double upperThreshold = 15000.0;

for (Double amount : salesAmounts) { // Kiểm tra mỗi giá trị nằm trong phạm vi if (amount >= lowerThreshold && amount <= upperThreshold) { System.out.println(amount + " is within range"); } }
Làm sạch dữ liệu bằng Java

Thiết lập phạm vi hợp lệ: kết quả

5320.0 is within range
7896.0 is within range
4501.0 is within range
12726.0 is within range
13685.0 is within range
Làm sạch dữ liệu bằng Java

Định nghĩa các nhóm phạm vi

import org.apache.commons.lang3.Range;
// Nhóm doanh số thấp: $0 - $5000
Range<Double> lowSales = Range.between(0.0, 5000.0);
// Nhóm doanh số trung bình: $5000 - $10000
Range<Double> mediumSales = Range.between(5000.0, 10000.0);
// Nhóm doanh số cao: $10000 - $15000
Range<Double> highSales = Range.between(10000.0, 15000.0);
Làm sạch dữ liệu bằng Java

Kiểm tra nhóm phạm vi

for (Double amount : salesAmounts) {
    if (lowSales.contains(amount)) { // Số tiền có trong phạm vi thấp?
        System.out.println("$" + amount + " - Doanh số thấp");
    } else if (mediumSales.contains(amount)) { // Số tiền có trong phạm vi trung bình?
        System.out.println("$" + amount + " - Doanh số trung bình");
    } else if (highSales.contains(amount)) { // Số tiền có trong phạm vi cao?
        System.out.println("$" + amount + " - Doanh số cao");
    } else { // Số tiền ngoài phạm vi kỳ vọng?
        System.out.println("$" + amount + " - Ngoài phạm vi kỳ vọng");
    }
}
Làm sạch dữ liệu bằng Java

Kiểm tra nhóm phạm vi: kết quả

Phân loại doanh số:
$5320.0 - Doanh số trung bình
$7896.0 - Doanh số trung bình
$4501.0 - Doanh số thấp
$12726.0 - Doanh số cao
$13685.0 - Doanh số cao
Làm sạch dữ liệu bằng Java

Xác thực ngày tháng

// d-MMM-yy: ngày (d), tên tháng viết tắt (MMM), năm 2 chữ số (yy)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d-MMM-yy");
LocalDate startDate = LocalDate.of(2022, 1, 1); // Bắt đầu 2022
LocalDate endDate = LocalDate.of(2022, 12, 31); // Kết thúc 2022

for (String dateStr : saleDates) { LocalDate saleDate = LocalDate.parse(dateStr, formatter);
// Ngày hợp lệ sau startDate và trước endDate boolean isValid = saleDate.isAfter(startDate) && saleDate.isBefore(endDate); System.out.println(dateStr + " is valid: " + isValid); }
Làm sạch dữ liệu bằng Java

Xác thực ngày tháng: kết quả

4-Jan-22 is valid: true
1-Aug-22 is valid: true
7-Jul-22 is valid: true
27-Apr-22 is valid: true
24-Feb-22 is valid: true
Làm sạch dữ liệu bằng Java

Tổng hợp

  • Import chính: org.apache.commons.lang3.Range
  • Lấy min và max: Collections.min(salesAmounts), Collections.max(salesAmounts)
  • Định nghĩa nhóm phạm vi: Range.between(0.0, 5000.0)
  • Kiểm tra nhóm phạm vi: lowSales.contains(amount)
  • Xác thực ngày: saleDate.isAfter(startDate), saleDate.isBefore(endDate)
Làm sạch dữ liệu bằng Java

Ayo berlatih!

Làm sạch dữ liệu bằng Java

Preparing Video For Download...