基于2017-07-07tlog 留存分析

1.留存统计基于2017-07-07tlog  统计的规则   PlayerRegister(玩家注册表),   PlayerLogin(玩家登录表),  ReturnFlow(切后台) , (登陆表+切后台表)的用户  与注册用户做对比,如果有共同的值, 就是留存

#!/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 + '
')

        if i.startswith('PlayerLogin'):        #玩家登录
            dtEventTime1 = i.split('|')[2]     #登陆时间
            vopenid1 = i.split('|')[6]         #用户OPENID号
            
            if begin_times1 <= dtEventTime1 <= end_times1:
                result1.append(vopenid1 + '
')
                
                
        if i.startswith('ReturnFlow'):         #玩家切后台
            vopenid2 = i.split('|')[6]         #用户OPENID号
            
            if begin_times1 <= dtEventTime1 <= end_times1:
                result2.append(vopenid2 + '
')
                
            
            

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)                
View Code

2.注册统计基于2017-07-07tlog  统计的规则   PlayerRegister(玩家注册表) ,规定时间内,注册用户值统计   

 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 + '
')
29 
30             if  shebeitime <= dtEventTime <= begin_times:
31                 result1.append(IMEI + '
')
32 
33             if shebeitime <= dtEventTime <= end_times:
34                 result2.append(IMEI + '
')
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
View Code
原文地址:https://www.cnblogs.com/augustyang/p/7155453.html