如何从CSV文件中读取输入?

时间:2019-07-09 18:52:46

标签: java

我正在尝试为销售线索建立评分引擎。分数越高,线索越热。我的应用程序将接受CSV文件路径作为输入。每行的布局如下:

contact id - integer
event - string
score - decimal

示例:

1,web,34.33
1,email,3.4
1,email,4
2,webinar,55.4
2,social,15

CSV文件中的每一行都表明特定联系人参与了特定事件。每行还提供一个分数,该分数表示对该联系人与该特定事件的互动程度的评估。在上述情况下,显示的第一条记录表明联系人1生成了一个网络事件,并且此互动的得分为34.33。每个联系人会有很多事件,并且一个联系人可能与特定事件类型进行多次交互。

以下是可用的事件类型:

web
email
social
webinar

每种事件类型都有一个相关的权重,表明该事件对销售线索参与度的重要性:

web 1.0
email 1.2
social 1.5
webinar 2.0

为了给特定的联系人打分,我尝试使用以下算法:

  1. 联系事件得分将首先按事件类型加权:

    web =得分* 1.0 电子邮件=得分* 1.2 社交=得分* 1.5 网络研讨会=得分* 2.0

  2. 然后将所有分数与联系人ID相加,以获得每个联系人的总分数。

  3. 然后将合计分数在0到100的范围内进行归一化。要对合计分数进行归一化,您将获取在所有分别为100和0的联系人中找到的最高和最低总分数,并对剩余的总和进行插值介于两者之间。将总和的分数四舍五入到最接近的整数。

  4. 最后,应根据归一化分数用四分位标记联系人:

    Q3 <标准化分数<= 100->铂 Q2 <归一化得分<= Q3->金 Q1 <标准化分数<= Q2->银 0 <=归一化分数<= Q1->古铜色

注意:四分位数将需要计算,不要假设分布均匀。 应用程序的输出应使用以下格式写入控制台:contactid,四分位数标签,规范化分数

Example output: 
1, silver, 44 
2, platinum, 99

我已将CSV文件读入输入,并用逗号分隔符分隔了值。

public static void main(String[] args) {
        //Delimiters used in the CSV file
        String COMMA_DELIMITER = ",";

        BufferedReader br = null;
        //Reading the csv file
        br = new BufferedReader(new FileReader("test_data.csv"));

        //Create List for holding Score objects
        List<Scores> interactions = new ArrayList<Scores>();

        String line = "";
        //Read to skip the header
        br.readLine();
        //Reading from the second line
        while ((line = br.readLine()) != null) {
            String[] retrieveScores = line.split(COMMA_DELIMITER);



            }
        }
    }

我希望

的输出
1, silver, 44
2, platinum, 99

但是我没有任何输出。

如果有人愿意带我走过这个问题,以获得期望的输出,我将不胜感激。

0 个答案:

没有答案