当前位置: 首页 > 知识库问答 >
问题:

如何在整个csv文件中找到每列的最小值和最大值

羊舌航
2023-03-14

如何在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] );
  }
}

没有得到预期的结果。

解决方案:计算csv文件中列的最小值和最大值

共有3个答案

景阳曜
2023-03-14

如果你关心大量的数据,你应该尽可能地把过程内联起来。

在您的例子中,您有一个分为两个项目的源。一行和元素。您可以使用类扫描仪

    Scanner lineScanner = new Scanner(source);

        while(lineScanner.hasNext()) {

            Scanner elementScanner = new Scanner(lineScanner.nextLine()).useDelimiter(",");

            for(int column = 1; elementScanner.hasNextDouble(); column++) {

                double nextDouble = elementScanner.nextDouble();

                updateMax(column, nextDouble); //or updateMinMax(column,nextDouble);
                updateMin(column, nextDouble);

            }

        }

    lineScanner.close();
叶书
2023-03-14
  1. 拆分()每行基于“,”

将步骤1-4循环,直到“文件中有更多行”。快乐编码。

堵彬彬
2023-03-14

你可以这样做:

  • 使用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();
            }
        }
    }

然后创建计算min和max的方法

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;
            }
    }
}
 类似资料:
  • 我试图找到矩阵中每列的最小值和最大值,但我当前的代码运行不正确。我试图把最小值放在一个新矩阵的第一行,最大值放在下一行,并对每一列这样做。任何帮助都将不胜感激,谢谢!

  • 我试图找到每一行CSV文件的MIN和MAX值,并将它们附加到列表中的下一个位置,位置5和6。我已经设法计算了平均值,将其附加到第四个位置,并将其从最高到最低输出。然而,我正在努力解决如何找到每行的MAX和MIN值,以便我可以做同样的操作——从最高到最低。原始CSV的格式是:弗雷德,56,78,99,每个用户在新行上。 任何帮助都将不胜感激。

  • 问题内容: 对于我的示例,拥有汽车对象,并根据模型(分组依据)发现了最小和最大价格值。 但是我找不到哪个汽车对象具有最高和最低价格。我怎样才能做到这一点? 问题答案: 如果您只对每个组感兴趣,则可以使用,例如 但是,由于您想要最昂贵和最便宜的产品,因此需要以下内容: 由于没有与之等效的通用统计对象,因此该解决方案带来了一些不便。如果这种情况不止一次发生,那么值得用这样的类填补空白: 将其添加到您的

  • 以我的例子为例,有一个car对象,并发现基于模型(group by)的最小和最大价格值。 但我找不到哪些汽车物品有最大和最小的价格。我怎么能那样做?

  • 问题内容: 我正在寻找python中整数的最小值和最大值。例如,在Java中,我们有和。python中是否有类似的东西? 问题答案: Python 3 在Python 3中,此问题不适用。普通int类型是无界的。 但是,你实际上可能正在寻找有关当前解释器的字长的信息,在大多数情况下,该信息将与机器的字长相同。该信息在Python 3中仍以形式提供,这是一个有符号的单词可以表示的最大值。等效地,它是

  • 我有一个名为的,它有4列,如下所示: 我想要的是找到关于类的每一列的最小值和最大值。换句话说,我希望得到一个类似于下面的结果: