Java中csv文件中列的加权平均值

时间:2015-12-04 12:15:31

标签: java csv

我正在尝试计算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

3 个答案:

答案 0 :(得分: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);
    }
    

答案 1 :(得分:0)

b [10] .length()不正确:它给出了特定行中第10个元素的字符串大小(并且它在循环中发生了变化)

line.length():行的长度

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

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

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

小心:有些csv有,或; ,也许在“(如果有字符串)

里面

答案 2 :(得分:0)

您必须使用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();
}