您的位置:首页 > 其它

腾讯项目数据分析脚本

2014-02-26 16:05 92 查看
截至到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("\t")[0];
String curId=previousId;
int lineNum=1;
lineNumList.add(lineNum);
while((line=br.readLine())!=null){
curId=line.split("\t")[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("\t")[3]);
}else if(lineNum==lineNumList.get(listIndex)){
pw.println(line.split("\t")[0]+"\n"+line.split("\t")[3]);
listIndex++;
}else if(lineNum==lineNumList.get(lineNumList.size()-1)){
pw.println(line.split("\t")[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();

}
}

}


统计每次的登录时长
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: