zoukankan      html  css  js  c++  java
  • 腾讯项目数据分析脚本

    截至到2月26日,网络遥控器的一些统计

    1,统计终端用户个数

    cat terminal02 terminal0226.txt | cut -f 3 | grep -v 'null' | wc -l
    21个用户,去除null之后实际为19个

    2,去除行为数据中的空字段,提取出用户id,operateBehavior,operateType,operateTime,remark 字段

    cat operate0226.txt | grep -v 'null' | cut -f 5,6,7,8,9 > preDealed.data
    统计可用记录数:

    wc -l preDealed.data

    3,统计贡献记录数目最多的用户

     cat preDealed.data | cut -f 1 | sort | uniq -c | sort -r -n |  sed '1,$s/^[ ]*//g' >user.top
    4,统计显式频道的top10

     cat preDealed.data | cut -f 5 |grep '频道:' | cut -d ',' -f 1 | cut -d ':' -f 2 | sed '/^$/d' | sort | uniq -c | sort -r -n | head -n 11 > ../result_data/program.top
    5.统计显式节目的top10

     cat preDealed.data | cut -f 5 | grep '节目'  | cut -d ',' -f 3 | cut -d ':' -f 2 | sed '/^$/d' | sort | sed '/^$/d'| uniq -c | sort -r -n | sed '1,$s/^[ ]*//g' | head -n 11 > ../result_data/program.top

    6,关于提取时间段的一个java程序

    package com.bobo.test;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    
    public class TengxunTimeDiff {
        //默认登录时间如果超过10分钟,那么就是一次另外的登录。
        private static int TimeDiff=20*60;
        public static void main(String[] args){
            String inFilePath="./myData/tengxun/preDealed.data";
            String outFilePath="./myData/tengxun/timeDiff.data";
            TengxunTimeDiff timeDiff=new TengxunTimeDiff();
            timeDiff.calTimeDiff(inFilePath,outFilePath);
        
            System.out.println("TengxunTimeDiff執行完畢");
        }
        private void calTimeDiff(String inFilePath,String outFilePath){
            FileReader fr=null;
            BufferedReader br=null;
            FileWriter fw=null;
            BufferedWriter bw=null;
            PrintWriter pw=null;
            ArrayList<Integer> lineNumList=new ArrayList<Integer>();
            try{
                fr=new FileReader(inFilePath);
                br=new BufferedReader(fr);
                fw=new FileWriter(outFilePath);
                bw=new BufferedWriter(fw);
                pw=new PrintWriter(bw);
                 //分两次吧,第一次先记录下来变化处的行号
                String line=null;
                String firstLine=br.readLine();
                String previousId=firstLine.split("	")[0];
                String curId=previousId;
                int lineNum=1;
                lineNumList.add(lineNum);
                while((line=br.readLine())!=null){
                    curId=line.split("	")[0];
                     lineNum++;
                    if(!curId.equals(previousId)){
                        //说明上一条的开始时间和结束时间可以写入了
                         previousId=curId;
                         lineNumList.add(lineNum);
                    }
                }
                lineNumList.add(lineNum);
                System.out.println(lineNumList);
                fr=new FileReader(inFilePath);
                br=new BufferedReader(fr);
                lineNum=1;
                int listIndex=0;
                while((line=br.readLine())!=null){
                    System.out.println(lineNum+":"+lineNumList.get(listIndex));
                    //注意對與最後一行也需要單獨處理
                    if(listIndex>lineNumList.size()-1){
                        return;
                    }
                    if(lineNum==lineNumList.get(listIndex)-1){
                        pw.println(line.split("	")[3]);
                    }else if(lineNum==lineNumList.get(listIndex)){
                        pw.println(line.split("	")[0]+"
    "+line.split("	")[3]);
                        listIndex++;
                    }else if(lineNum==lineNumList.get(lineNumList.size()-1)){
                        pw.println(line.split("	")[3]);
                    }
                    
    
                    lineNum++;
                }
                pw.println();
                //一次文件讀兩次
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                try {
                    bw.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                pw.flush();
                pw.close();
                
            }
        }
    
    }
    统计每次的登录时长
  • 相关阅读:
    动手动脑
    加减乘除
    测试
    Java学习的第五十六天
    Java学习的第五十五天
    js判断一个时间是否在某一个时间段内
    js计算两个时间相差多少分钟
    js分钟转化为小时并且以某个数字进行递增
    关于Js debounce(防抖)函数和throttle(节流)小结
    webpack配置scss
  • 原文地址:https://www.cnblogs.com/bobodeboke/p/3569499.html
Copyright © 2011-2022 走看看