Tính mean, min, max
Bạn muốn phân tích dữ liệu bán hàng cho cửa hàng cà phê của mình. Dữ liệu gồm ngày giao dịch, tên loại đồ uống, phương thức thanh toán, số lượng bán và số tiền giao dịch, như trong mẫu dưới đây. Hãy tính giá trị trung bình (mean), nhỏ nhất (minimum) và lớn nhất (maximum) của số tiền giao dịch và định dạng với hai chữ số thập phân.
| date | coffee_name | payment_method | quantity | amount |
|---|---|---|---|---|
| 3/1/24 | Latte | cash | 1 | $6.26 |
| 3/5/24 | Hot Chocolate | card | 3 | $32.51 |
| 3/6/24 | Americano | card | 2 | $18.70 |
Các package cần thiết như LocalDate, Arrays và List đã được nhập sẵn cho bạn.
Bài tập này là một phần của khóa học
Làm sạch dữ liệu bằng Java
Hướng dẫn bài tập
- Tính giá trị trung bình của số tiền giao dịch bằng
stats. - Tính giá trị nhỏ nhất và lớn nhất của số tiền giao dịch bằng
stats.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
public class CoffeeSalesExample {
private record CoffeeSales(LocalDate date, String coffeeName,
String paymentMethod, int quantity, double amount) {
}
public static void main(String[] args) {
List sales = Arrays.asList(
new CoffeeSales(LocalDate.of(2024, 3, 1), "Latte", "cash", 1, 6.26),
new CoffeeSales(LocalDate.of(2024, 3, 5), "Hot Chocolate", "card", 3, 32.51),
new CoffeeSales(LocalDate.of(2024, 3, 6), "Americano", "card", 2, 18.70));
DescriptiveStatistics stats = new DescriptiveStatistics();
sales.forEach(sale -> stats.addValue(sale.amount()));
System.out.printf("\nSales analyzed: %d%n", sales.size());
// Compute the mean transaction amount
System.out.printf("Average amount: $%.2f%n", ____.____());
// Compute the min and max transaction amounts
System.out.printf("Amount range: $%.2f - $%.2f%n",
____.____(), ____.____());
}
}