表的结构
id,name,time
1,a,1992-11
2,a,1992-12
3,b,1992-11
4,b,1992-12
5,d,1992-13
6,b,1992-13
7,c,1992-11
逆序输出登录次数最多的用户,以及登录的次数
1在linux下,进行分析
sed '1d' data.txt | awk -F, '{print $2}' | sort | uniq -c | sort -r sed是行处理器,首先删除掉第一行|进行分割,分隔符为“,”,输出|排序,因为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 csv from collections import defaultdict f=csv.reader(open("data.csv")) mydict=defaultdict(int) tag=0 for line in f: tag += 1 if tag==1: continue mydict[line[1]]+=1 print(sorted(mydict.items(),key=lambda item:item[1],reverse=True))