zoukankan      html  css  js  c++  java
  • 基于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
  • 相关阅读:
    Java多线程(二) synchronized 针对对象进行锁定
    微信公众号 openId获取
    Java多线程(一) Thread和 Runnable
    设计模式
    vue城市选择组件
    分享几个简单的技巧让你的 vue.js 代码更优雅
    手把手教你vue配置请求本地json数据
    详解vue全局组件与局部组件使用方法
    细说vue axios登录请求拦截器
    在Vue项目中加载krpano全景图
  • 原文地址:https://www.cnblogs.com/augustyang/p/7155453.html
Copyright © 2011-2022 走看看