【问题标题】:Weighted mean of a column in csv file in JavaJava中csv文件中列的加权平均值
【发布时间】:2015-12-04 22:26:02
【问题描述】:

我正在尝试计算 CSV 文件中存在的列中的元素数,我想使用它来计算平均值。

这就是我试图找到列长度的方法,但它给了我列中每个数据的长度。这是非常愚蠢的事情,但我已经坚持了很长时间。

public static void main(String[] args) throws Exception {
                String splitBy = ";";
                int x;
        BufferedReader br = new BufferedReader(new FileReader("bank.csv"));
        String line;
        while ((line = br.readLine()) !=null) {
             String[] b = line.split(splitBy);
             x = b[10].length();
             System.out.println("length " + x);
        }
        br.close();

  }

这是 CSV 文件: https://raw.githubusercontent.com/pandutruhandito/practice_bank_marketing_data/master/bank/bank-full.csv

【问题讨论】:

  • 你能显示你的 csv 文件的一部分吗?
  • 您不想计算 csv 中的行数以获取值的总数吗?
  • 我已将链接添加到 csv 文件

标签: java csv


【解决方案1】:

您将需要以下内容。一些笔记。

  • 如果始终需要某个值,那么您只需计算 CSV 中的行数,即可得出列中值的数量。否则,您需要检查是否有实际值。
  • 您正在抓取月份列,记住索引从 0 开始。

    public static void main(String[] args) throws Exception {
        final String splitBy = ";";
        int totalValue = 0;
        int columnCount = 0;
        final BufferedReader br = new BufferedReader(new FileReader("C:/test/bank-full.csv"));
        String line;
        // Throw away headers.
        line = br.readLine();
        while ((line = br.readLine()) != null)
        {
             String[] splitCSV = line.split(splitBy);
             if (!splitCSV[9].equals(""))
             {
                 totalValue += Integer.parseInt(splitCSV[9]);
                 columnCount++;
             }
        }
        br.close();
        System.out.println("Average is " + totalValue / columnCount);
    }
    

【讨论】:

    【解决方案2】:

    b[10].length() 不正确:它为您提供特定行中第 10 个元素的字符串大小(并在循环中更改)

    line.length(): 行的长度

    b.length: 一行中的元素个数

    如果你想要列数,你可以只保留读取的行数(只计算你的 readlin())

    或者您也可以将所有内容都保存在一个表格中。

    注意:一些 csv 有 , 或 ; , 也可能在 " 里面 (如果有字符串)

    【讨论】:

    • b[10] 对应一列。我想知道该列中有多少元素。
    【解决方案3】:

    您必须使用x = b.length;,这将为您提供每行的确切长度。

    public static void main(String[] args) throws Exception {
        String splitBy = ";";
        int x;
        BufferedReader br = new BufferedReader(new FileReader("bank.csv"));
        String line;
        while ((line = br.readLine()) !=null) {
            String[] b = line.split(splitBy);
            x = b.length;
            System.out.println("length " + x);
        }
        br.close();
    }
    

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 2021-09-03
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多