四种方式对数据进行统计

来源:互联网 发布:电子音合成软件 编辑:程序博客网 时间:2024/05/01 06:39

表的结构

id,name,time1,a,1992-112,a,1992-123,b,1992-114,b,1992-125,d,1992-136,b,1992-13
7,c,1992-11
逆序输出登录次数最多的用户,以及登录的次数
1在linux下,进行分析
sed '1d' data.txt | awk -F, '{print $2}' | sort | uniq -c | sort -rsed是行处理器,首先删除掉第一行|进行分割,分隔符为“,”,输出|排序,因为uniq去重需要接壤的|去重,并统计重复的个数|sort排序,-r是逆序
2使用java进行处理
package Txt;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.util.*;/** * Created by MiMi on 2017/4/22. */public class DateSplit {    public static void main(String args[]){        try {            BufferedReader br=new BufferedReader(new FileReader(new File("data")));            br.readLine();            String str=br.readLine();            Map<String,Integer> hashMap=new HashMap<String,Integer>();            while(str!=null){                String[] strs=str.split(",");                if(hashMap.get(strs[1])!=null){                    hashMap.put(strs[1],hashMap.get(strs[1])+1);                }else{                    hashMap.put(strs[1],1);                }                str=br.readLine();            }            List<Map.Entry<String,Integer>> list=new ArrayList<Map.Entry<String,Integer>>(hashMap.entrySet());            Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {                @Override                public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {                    return o2.getValue().compareTo(o1.getValue());                }            });            System.out.println(list);        } catch (IOException e) {            e.printStackTrace();        }    }}
3mysql的sql查询
select name,count(time) as num from tb group by name order by num desc
4python实现
import csvfrom collections import defaultdictf=csv.reader(open("data.csv"))mydict=defaultdict(int)tag=0for line in f:    tag += 1    if tag==1:        continue    mydict[line[1]]+=1print(sorted(mydict.items(),key=lambda item:item[1],reverse=True))

0 0