gpt4 book ai didi

java - 如何查找整个 csv 文件中每一列的最小值和最大值

转载 作者:行者123 更新时间:2023-12-01 18:35:54 47 4
gpt4 key购买 nike

如何查找 csv 文件中每列的最小值和最大值(albhabet 值除外)。

I want to get each columns min and max values

5.3,3.6,1.6,0.3,Iris-setosa
4.9,3.3,1.6,0.3,Iris-setosa
4.9,3.3,1.3,0.3,Iris-setosa
4.6,3.3,1.6,0.0,Iris-setosa

col 1, min = 4.6 ,max = 5.3
col 2, min = 3.3 ,max = 3.6
col 3, min = 1.3 ,max = 1.6
col 4, min = 0.0 ,max = 0.3

我所做的是,我迭代每一行并将每一列存储在 HashMap 中

{1=[5.3,4.9,4.9,4.6],2=[3.6,3.3,3.3,3.3],3[1.6,1.6,1.3,1.6],4[0.3,0.3,0.3,0.0]}

然后我计算

for (Map.Entry<String, List<String>> entry : map.entrySet()) {      
// Iterating through values
String key = entry.getKey();
List<String> values = entry.getValue();
min = Double.parseDouble(Collections.min(values));
max = Double.parseDouble(Collections.max(values));
}

但是当大数据到来时,在 hashmap 中保存那么多数据并不是更好然后找到最小值和最大值我怎样才能以其他方式找到最小值/最大值。

更新

String line[] = value.split(delimit);
for(int i=0;i<line.length -1;i++){
if (Double.parseDouble(line[i] ) < min) {
min = Double.parseDouble(line[i] );
}
if (Double.parseDouble(line[i] ) > max) {
max = Double.parseDouble(line[i] );
}
}

没有得到预期的结果。

解决方案:Calculating min and max of columns in a csv file

最佳答案

你可以这样做:

  • 使用 Stream 读取文件。
  • 逐行读取数据。
  • 拆分列。
  • 创建一个计算最大值和最小值的方法。

所以它可能看起来像这样:

    BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";

try {

br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {

// use comma as separator
String[] columns= line.split(cvsSplitBy);

calculateMinAndMax(columns);

}

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

然后创建一个方法来计算最小值和最大值

private double[] maxValues = {0, 0, 0, 0};
private double[] minValues = {0, 0, 0, 0};
private void calculateMinAndMax(String[] line) {
for (int i = 0; i < line.length; i++) {
//check the max value
double currentValue = Double.Double.parseDouble(line[i]);
if(currentValue > maxValues[i] ) {
maxValues[i] = currentValue;
}

//check the min value
if(currentValue < minValues[i]) {
minValues[i] = currentValue;
}
}
}

关于java - 如何查找整个 csv 文件中每一列的最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22036492/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com