1.留存统计,基于2017-07-07tlog 统计的规则 PlayerRegister(玩家注册表), PlayerLogin(玩家登录表), ReturnFlow(切后台) , (登陆表+切后台表)的用户 与注册用户做对比,如果有共同的值, 就是留存
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#!/usr/bin/env python #_*_ encoding: utf-8 _*_ ########################### #'''留存 三留 七留''' #__author__ = 'augustyang' #2017-7-11 ########################### import os,sys,time,datetime begin_times = sys.argv[1] #开始时间 end_times = sys.argv[2] #结束时间 begin_times1 = sys.argv[3] #开始时间1 end_times1 = sys.argv[4] #结束时间1 t_log='tlog.log' #T_log文件名可以自己修改 result = [] #注册用户的vopenid result1 = [] #登录用户的vopenid result2 = [] #玩家切后台vopenid with open(t_log, 'rt') as f: for i in f: if i.startswith('PlayerRegister'): #玩家注册 dtEventTime = i.split('|')[2] #注册时间 vopenid = i.split('|')[6] #用户OPENID号 if begin_times <= dtEventTime <= end_times: result.append(vopenid + '\n') if i.startswith('PlayerLogin'): #玩家登录 dtEventTime1 = i.split('|')[2] #登陆时间 vopenid1 = i.split('|')[6] #用户OPENID号 if begin_times1 <= dtEventTime1 <= end_times1: result1.append(vopenid1 + '\n') if i.startswith('ReturnFlow'): #玩家切后台 vopenid2 = i.split('|')[6] #用户OPENID号 if begin_times1 <= dtEventTime1 <= end_times1: result2.append(vopenid2 + '\n') msg = list(set(result)) #规定时间内, 注册用户的vopenid去重 msg1 = list(set(result1)) #规定时间内, 登陆用户的vopenid去重 msg2 = list(set(result2)) #规定时间内, 切入后台的玩家vopenid去重 msg2.extend(msg1) #规定时间内,登陆用户的vopenid+切入后台的玩家vopenid msg3 = list(set(msg2)) #msg2去重 msg4 = [] #取出第一天注册,第二天登陆,return 的vopenid(第一天注册的用户) #判断第一天注册, 第二天登陆所有用户,是否在注册用户中,如果有就保留,就是留存用户 for openid in msg: for openid1 in msg3: if openid==openid1: msg4.append(openid) registerenumbers = len(msg) #注册人数 login_num = len(msg4) #留存登陆用户 print '注册人数', registerenumbers print '留存登陆用户', login_num if registerenumbers == 0 or login_num==0: print '留存没有数据' exit() print '留存',"%.2f%%" %(float(login_num)/float(registerenumbers)*100)
2.注册统计,基于2017-07-07tlog 统计的规则 PlayerRegister(玩家注册表) ,规定时间内,注册用户值统计
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #!/usr/bin/env python 2 #_*_ encoding: utf-8 _*_ 3 4 ########################## 5 #__author__ = 'augustyang' 6 #2017-7-11 7 #'''注册 新增设备''' 8 ########################## 9 10 11 import os,sys,time,datetime 12 begin_times = sys.argv[1] #开始时间 13 end_times = sys.argv[2] #结束时间 14 shebeitime = str(datetime.datetime.strptime("2017-07-11 00:00:00",'%Y-%m-%d %H:%M:%S')) #开服时间 15 t_log='tlog.log' 16 result = [] 17 result1 = [] 18 result2 = [] 19 20 with open(t_log, 'rt') as f: 21 for i in f: 22 if i.startswith('PlayerRegister'): #PlayerRegister注册表 23 dtEventTime = i.split('|')[2] #注册时间 24 vopenid = i.split('|')[6] #用户OPENID号 25 IMEI = i.split('|')[23] #新注册设备 26 27 if begin_times <= dtEventTime <= end_times: 28 result.append(vopenid + '\n') 29 30 if shebeitime <= dtEventTime <= begin_times: 31 result1.append(IMEI + '\n') 32 33 if shebeitime <= dtEventTime <= end_times: 34 result2.append(IMEI + '\n') 35 36 msg = len(list(set(result))) 37 msg1 = len(list(set(result1))) #开服到今天0点所有的设备数 38 msg2 = len(list(set(result2))) #开服到统计点的设备数 39 40 msg3 = "%s到%s新增设备: %s" % (begin_times, end_times,(msg2 -msg1)) 41 42 print '注册用户为: ', msg 43 print msg3