数据分析-数据预处理-根据CSV格式的数据的第一列作为key,若第一列的key相等,则将相同的key后面的第二列合并添加(Java版)

本文介绍如何使用Java处理CSV格式数据,根据第一列值合并相同key的第二列值,形成序列数据集。通过比较当前行与上一行的用户ID,结合Java的数据结构和文件操作方法完成数据预处理。

一:题目--文章需要解决的问题

题目的意思也可以表述为:

        将一堆项集数据,根据数据的第一列值是否相同,来判断第二列的值是否该进行合并,相当于使之变成序列数据集。

题目的样例1表述

       输出的数据格式 (可以先用Excel进行升序处理,便于userID相等的呆在一起)

       a,v1
       a,v2
       b,v3
       a,v4
       c,v3
       c,v5  

     数据预处理后后的结果:

     a,v1|v2|v4
     b,v3
     c,v3|v5

题目的样例2表述:

userid   value

    0       1

    0       3

    0       5

    1        2

    1        4

 数据预处理后的结果:

 userid    value

0              1  3  5

1               2   4

二:题目解决的思路

     主要判断当前行的userid是否与上一行的userid相等,若相等,则进行添加,使之成为一行即成为一个单独的序列;若不想等,则新起一行,成为一个新的序列的开头数据。

    借助list,hashmap,map的value,key等Java的数据结构进行数据操作;借助stringBuffer,StringBuilder,BufferedWriter,BufferReader等进行文件相关数据读取,写入等操作;利用泛型方法进行数据的拼接,利用迭代器进行集合的遍历。

三:具体代码及注释

package temp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class mosaicFile2 {
    public static void WriteCSV2(File csv, StringBuffer sBuffer) {
        BufferedWriter bw;
        /*
         * BufferedWriter类:用于加快写入的速度。
         *      构造方法: BufferedWriter bf = new BufferedWriter(Write out)
         *      主要方法: void write(): 写入单个字符
         *               void newLine(): 写入一个行分隔符
         *               void close(): 关闭该流
         *      
         *               */
        try {
            bw = new BufferedWriter(new FileWriter(csv, true));
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值