示例#1
0
def write_renew_report(file_name, nick_list):
    """收集nick_list的报表"""
    
    print_keys = ['nick', 'campaign', 'multi_cost', 'multi_cpc', 'multi_roi', \
            'multi_cvr', 'multi_ctr', 'count_days']
    header_keys = ['店铺昵称', '计划名称', '多天花费', '多天cpc', '多天roi', '多天转化率',\
            '多天点击率', '统计天数']
    write_obj = file(CURRENT_DIR+'data/renew_report.csv', 'w')
    write_obj.write(','.join(header_keys)+'\n')

    for line in file(file_name):
        campaign = Report.parser_report(line)
        if not campaign:
            continue

        if campaign['nick'] in nick_list:
            report_str = []
            for key in print_keys:
                if key in ['multi_cost', 'multi_cpc']:
                    campaign[key] /= 100.0
                elif key in ['multi_cvr', 'multi_ctr', 'multi_roi']:
                    campaign[key] = '%.3f' % campaign[key]
                report_str.append(str(campaign[key]))
            write_obj.write(','.join(report_str)+'\n')
    
    write_obj.close()
def analysis_campaign_horizontal(file_name):
    """
    多个计划的 横向对比分析
    """
    NICK = None
    CAMPAIGN_LIST = []
    NUMBER_DICT = {}
    content = '' 
    for key in SOFT_LIST[1:]:
        NUMBER_DICT[key] = Compare()

    for line in file(file_name):
        campaign = Report.parser_report(line)
        if not campaign:
            continue
        if not NICK or campaign['nick'] == NICK:
            if campaign['campaign'].find('省油宝长尾计划') != -1:
                CAMPAIGN_LIST.insert(0, campaign)
            else:
                CAMPAIGN_LIST.append(campaign)
            if not NICK:
                NICK = campaign['nick'] 
        else:
            NICK = campaign['nick']
            analysis(CAMPAIGN_LIST, NUMBER_DICT)
            CAMPAIGN_LIST = []
    content += '下面为相应指标好的个数\n'
    for key in NUMBER_DICT:
        _compare_result = NUMBER_DICT[key]
        content += '省油宝长尾计划 与 ' + key + ': ' + str(_compare_result.total)
        _result = _compare_result.result
        content += '\n多天ROI: %d    %d\n' % (_result[0][0], _result[0][2])
        content += '多天成交额: %d    %d\n' % (_result[1][0], _result[1][2])
        content += '单天ROI: %d    %d\n' % (_result[2][0], _result[2][2])
    return content
示例#3
0
def write_renew_report(file_name, nick_list):
    """收集nick_list的报表"""

    print_keys = ['nick', 'campaign', 'multi_cost', 'multi_cpc', 'multi_roi', \
            'multi_cvr', 'multi_ctr', 'count_days']
    header_keys = ['店铺昵称', '计划名称', '多天花费', '多天cpc', '多天roi', '多天转化率',\
            '多天点击率', '统计天数']
    write_obj = file(CURRENT_DIR + 'data/renew_report.csv', 'w')
    write_obj.write(','.join(header_keys) + '\n')

    for line in file(file_name):
        campaign = Report.parser_report(line)
        if not campaign:
            continue

        if campaign['nick'] in nick_list:
            report_str = []
            for key in print_keys:
                if key in ['multi_cost', 'multi_cpc']:
                    campaign[key] /= 100.0
                elif key in ['multi_cvr', 'multi_ctr', 'multi_roi']:
                    campaign[key] = '%.3f' % campaign[key]
                report_str.append(str(campaign[key]))
            write_obj.write(','.join(report_str) + '\n')

    write_obj.close()
def analysis_campaign_simple(file_name):
    """
    get simple report
    """
    soft_list = ['省油宝长尾计划', '省油宝加力计划', '广撒网计划', '喜宝计划', '极品飞车', '懒人开车', '疯狂车手', '大麦']
    soft_statistics_dict = {}
    for key in soft_list:
        soft_statistics_dict[key] = Statistics()

    for line in file(file_name):
        report = Report.parser_report(line)
        if not report:
            continue
        for campaign_name in soft_list:
            if report['campaign'].find(campaign_name) != -1:
                soft_statistics_dict[campaign_name].statistics(report)
        
    content = ''
    for key in soft_list:
        result = soft_statistics_dict[key]
        content += key + '\n'
        content += '有效数(多天花费不为0):%d, 多天花费为0数:%d\n' % (result.count, result.unnormal_count)
        content += '昨天 有效用户的平均花费:%.1f, 平均成交额:%.1f, 平均ROI:%.1f, 平均CPC:%.1f\n' % \
                (result.sum_cost / result.count, result.sum_pay / result.count, \
                result.sum_pay / result.sum_cost, result.sum_cost / result.sum_click)
        content += '昨天 有效用户中ROI为0数:%d,   占比:%.2f\n' % (result.low_roi_count, \
                result.low_roi_count / (result.count + 0.001))
        content += '多天 有效用户的平均花费:%.1f, 平均成交额:%.1f\n' % \
                (result.sum_multi_cost / result.count, result.sum_multi_pay / result.count)
        content += '多天 有效用户的日均花费:%.1f, 日均成交额:%.1f, 日均ROI:%.1f\n\n' % \
                (result.sum_day_cost / result.count, result.sum_day_pay / result.count, \
                result.sum_day_pay / result.sum_day_cost)
    
    return content
示例#5
0
def analysis_campaign_horizontal(file_name):
    """
    多个计划的 横向对比分析
    """
    NICK = None
    CAMPAIGN_LIST = []
    NUMBER_DICT = {}
    content = ''
    for key in SOFT_LIST[1:]:
        NUMBER_DICT[key] = Compare()

    for line in file(file_name):
        campaign = Report.parser_report(line)
        if not campaign:
            continue
        if not NICK or campaign['nick'] == NICK:
            if campaign['campaign'].find('省油宝长尾计划') != -1:
                CAMPAIGN_LIST.insert(0, campaign)
            else:
                CAMPAIGN_LIST.append(campaign)
            if not NICK:
                NICK = campaign['nick']
        else:
            NICK = campaign['nick']
            analysis(CAMPAIGN_LIST, NUMBER_DICT)
            CAMPAIGN_LIST = []
    content += '下面为相应指标好的个数\n'
    for key in NUMBER_DICT:
        _compare_result = NUMBER_DICT[key]
        content += '省油宝长尾计划 与 ' + key + ': ' + str(_compare_result.total)
        _result = _compare_result.result
        content += '\n多天ROI: %d    %d\n' % (_result[0][0], _result[0][2])
        content += '多天成交额: %d    %d\n' % (_result[1][0], _result[1][2])
        content += '单天ROI: %d    %d\n' % (_result[2][0], _result[2][2])
    return content
示例#6
0
def analysis_campaign_simple(file_name):
    """
    get simple report
    """
    soft_list = ['广撒网计划', '喜宝计划', '极品飞车', '懒人开车', '疯狂车手', '大麦']
    soft_statistics_dict = {}
    for key in soft_list:
        soft_statistics_dict[key] = Statistics()

    for line in file(file_name):
        report = Report.parser_report(line)
        if not report:
            continue
        for campaign_name in soft_list:
            if report['campaign'].find(campaign_name) != -1:
                soft_statistics_dict[campaign_name].statistics(report)

    content = ''
    for key in soft_list:
        result = soft_statistics_dict[key]
        if result.count <= 0:
            continue
        content += key + '如下所有指标都是针对计划的\n'
        content += '有效数(多天花费不为0):%d, 无效数(多天花费为0数):%d\n' % (
            result.count, result.unnormal_count)
        content += '有效用户的昨日 平均花费:%.1f, 平均成交额:%.1f, 平均ROI:%.1f, 平均CPC:%.1f\n' % \
                (result.sum_cost / result.count, result.sum_pay / result.count, \
                result.sum_pay / result.sum_cost, result.sum_cost / result.sum_click)
        content += '有效用户中昨日 ROI为0数:%d,   占比:%.2f\n' % (result.low_roi_count, \
                float(result.low_roi_count) / result.count)
        content += '有效用户多天花费的平均值:%.1f, 多天成交额平均值:%.1f\n' % \
                (result.sum_multi_cost / result.count, result.sum_multi_pay / result.count)
        content += '有效用户的日均花费的平均值:%.1f, 日均成交额的平均值:%.1f, 日均ROI:%.1f\n\n' % \
                (result.sum_day_cost / result.count, result.sum_day_pay / result.count, \
                result.sum_day_pay / result.sum_day_cost)

    return content
示例#7
0
def collect_all_shop(file_name, campaign_name):
    """收集所有店铺"""

    campaign_list = []
    for line in file(file_name):
        campaign = Report.parser_report(line)
        if not campaign:
            continue
        if campaign['campaign'] == '账户整体情况':
            shop = campaign
            continue
        if campaign['campaign'].find(campaign_name) != -1:
            if campaign['nick'] != shop['nick']:
                print '出现不一致:',shop['nick']
            Report.add_shop(campaign, shop)
            #排除非正常 数据
            if campaign['count_days'] <= 0:
                continue
            if campaign['multi_cost'] > campaign['shop_multi_cost'] or \
                    campaign['multi_pay'] > campaign['shop_multi_pay']:
                continue
            campaign_list.append(campaign)

    return campaign_list
示例#8
0
def collect_all_shop(file_name, campaign_name):
    """收集所有店铺"""

    campaign_list = []
    for line in file(file_name):
        campaign = Report.parser_report(line)
        if not campaign:
            continue
        if campaign['campaign'] == '账户整体情况':
            shop = campaign
            continue
        if campaign['campaign'].find(campaign_name) != -1:
            if campaign['nick'] != shop['nick']:
                print '出现不一致:', shop['nick']
            Report.add_shop(campaign, shop)
            #排除非正常 数据
            if campaign['count_days'] <= 0:
                continue
            if campaign['multi_cost'] > campaign['shop_multi_cost'] or \
                    campaign['multi_pay'] > campaign['shop_multi_pay']:
                continue
            campaign_list.append(campaign)

    return campaign_list
示例#9
0
def analysis_campaign_complex(file_name, campaign_name):
    """详细分析 某个计划"""

    campaign_list = []
    for line in file(file_name):
        campaign = Report.parser_report(line)
        if not campaign:
            continue
        if campaign['campaign'] == '账户整体情况':
            shop = campaign
            continue
        if campaign['campaign'].find(campaign_name) != -1:
            if campaign['nick'] != shop['nick']:
                print '出现不一致:', shop['nick']
            Report.add_shop(campaign, shop)
            #排除非正常 数据
            if campaign['count_days'] <= 0:
                continue
            if campaign['multi_cost'] > campaign['shop_multi_cost'] or \
                    campaign['multi_pay'] > campaign['shop_multi_pay']:
                continue
            campaign_list.append(campaign)

    zero_cost = 0
    multi_roi_zero = 0
    multi_roi_unzero = 0
    multi_roi_bigger_2 = 0

    sum_key_dict = {}
    main_keys = []
    daily_keys = [
        'multi_pv', 'multi_click', 'multi_cost', 'multi_pay', 'multi_pay_count'
    ]
    for key in MAIN_KEYS:
        main_keys.append(key)
        main_keys.append('shop_' + key)

    main_keys.extend(['multi_cost_percent', 'multi_pay_percent'])
    for key in main_keys:
        sum_key_dict[key] = 0
    for key in daily_keys:
        sum_key_dict['daily_' + key] = 0

    multi_cost_percent_bigger_9 = 0
    multi_cost_percent_bigger_5 = 0

    for campaign in campaign_list:
        if campaign['multi_cost'] <= 0:
            zero_cost += 1
            continue

        for key in main_keys:
            sum_key_dict[key] += campaign[key]
        for key in daily_keys:
            sum_key_dict['daily_' +
                         key] += campaign[key] / campaign['count_days']

        if campaign['multi_cost_percent'] >= 0.9:
            multi_cost_percent_bigger_9 += 1
        if campaign['multi_cost_percent'] >= 0.5:
            multi_cost_percent_bigger_5 += 1

        if campaign['multi_roi'] <= 0:
            multi_roi_zero += 1
        else:
            multi_roi_unzero += 1
            if campaign['multi_roi'] >= 2:
                multi_roi_bigger_2 += 1

    unzero_cost = len(campaign_list) - zero_cost

    content = campaign_name + '的分析\n'
    content += '用户数:%d, 花费为0数:%d,花费不为0数:%d, 如下统计针对多天花费不为0的用户\n' % (
        len(campaign_list), zero_cost, unzero_cost)
    content += '单天报表分析:\n'
    content += '昨日 平均花费:%.1f, 平均成交额:%.1f, 平均ROI:%.1f, 平均CPC:%.1f\n' % (\
            sum_key_dict['cost'] / unzero_cost / 100, sum_key_dict['pay'] / unzero_cost / 100, \
            sum_key_dict['pay'] / sum_key_dict['cost'], sum_key_dict['cost'] / sum_key_dict['click'] / 100)

    content += '昨日 平均展现:%d, 平均点击:%d, 平均点击率:%.3f, 平均转化率:%.3f\n' % (\
            sum_key_dict['pv'] / unzero_cost, sum_key_dict['click'] / unzero_cost, \
            sum_key_dict['click'] / (sum_key_dict['pv']+0.01), \
            sum_key_dict['pay_count'] / (sum_key_dict['click']+0.01))

    content += '多天报表分析:\n'
    content += '日均花费:%.1f, 日均成交额:%.1f, 日均ROI:%.1f, 日均CPC:%.1f\n' % (\
            sum_key_dict['daily_multi_cost'] / unzero_cost / 100, \
            sum_key_dict['daily_multi_pay'] / unzero_cost / 100, \
            sum_key_dict['daily_multi_pay'] / sum_key_dict['daily_multi_cost'],\
            sum_key_dict['daily_multi_cost'] / sum_key_dict['daily_multi_click'] / 100)

    content += '日均展现:%d, 日均点击:%d, 日均点击率:%.3f, 日均转化率:%.3f\n' % (\
            sum_key_dict['daily_multi_pv'] / unzero_cost, \
            sum_key_dict['daily_multi_click'] / unzero_cost, \
            sum_key_dict['daily_multi_click'] / (sum_key_dict['daily_multi_pv']+0.01),\
            sum_key_dict['daily_multi_pay_count'] / (sum_key_dict['daily_multi_click']+0.01))

    content += '多天ROI大于0数:%d,占比:%.1f,多天ROI大于2数:%d,占比:%.1f\n' %(multi_roi_unzero,\
            float(multi_roi_unzero) / unzero_cost, multi_roi_bigger_2, float(multi_roi_bigger_2) / unzero_cost)
    content += '其中该计划多天花费占全店花费比 不小于0.9的 比例:%.2f, 不小于0.5的 比例:%.2f\n' % (\
            float(multi_cost_percent_bigger_9)/unzero_cost , float(multi_cost_percent_bigger_5)/unzero_cost)
    content += '所有计划多天花费占所有全店多天 花费的比例:%.2f,所有计划多天成交占所有全店多天成交的比例:%.2f\n\n' % (
        sum_key_dict['multi_cost'] / sum_key_dict['shop_multi_cost'],
        sum_key_dict['multi_pay'] / sum_key_dict['shop_multi_pay'])

    return content
def analysis_campaign_complex(file_name, campaign_name):
    """详细分析 某个计划"""

    campaign_list = []
    for line in file(file_name):
        campaign = Report.parser_report(line)
        if not campaign:
            continue
        if campaign['campaign'] == '账户整体情况':
            shop = campaign
            continue
        if campaign['campaign'].find(campaign_name) != -1:
            if campaign['nick'] != shop['nick']:
                print '出现不一致:',shop['nick']
            Report.add_shop(campaign, shop)
            campaign_list.append(campaign)

    zero_cost = 0
    multi_roi_zero = 0
    multi_roi_unzero = 0
    multi_roi_bigger_2 = 0
    sum_multi_roi = 0
    sum_multi_pay = 0
    sum_shop_multi_pay = 0
    sum_multi_cost = 0
    sum_shop_multi_cost = 0
    sum_multi_cost_percent = 0
    sum_multi_pay_percent = 0
    multi_cost_percent_bigger_9 = 0
    multi_cost_percent_bigger_5 = 0
    for syb in campaign_list:
        if syb['multi_cost'] <= 0:
            zero_cost += 1
            continue
        sum_multi_cost += syb['multi_cost']
        sum_shop_multi_cost += syb['shop_multi_cost']
        sum_multi_pay += syb['multi_pay']
        sum_shop_multi_pay += syb['shop_multi_pay']
        sum_multi_cost_percent += syb['multi_cost_percent']
        sum_multi_pay_percent += syb['multi_pay_percent']
        if syb['multi_cost_percent'] >= 0.9:
            multi_cost_percent_bigger_9 += 1
        if syb['multi_cost_percent'] >= 0.5:
            multi_cost_percent_bigger_5 += 1

        if syb['multi_roi'] <= 0:
            multi_roi_zero += 1
        else:
            multi_roi_unzero += 1
            sum_multi_roi += syb['multi_roi']
            if syb['multi_roi'] >= 2:
                multi_roi_bigger_2 += 1

    unzero_cost = len(campaign_list) - zero_cost
    content = campaign_name + '的简单分析'
    content += '用户数:%d,花费为0数:%d,花费不为0数:%d\n' % (len(campaign_list), zero_cost, unzero_cost)
    content += '多天ROI大于0数:%d,占比:%.1f,多天ROI大于2数:%d,占比:%.1f\n' %(multi_roi_unzero,\
            float(multi_roi_unzero) / unzero_cost, multi_roi_bigger_2, float(multi_roi_bigger_2) / unzero_cost)
    content += '花费不为0的用户中\n'
    content += '多天花费占全店多天花费比例 的平均值:%.2f,多天成交占全店多天成交比例的平均值:%.2f\n' %(sum_multi_cost_percent / unzero_cost, sum_multi_pay_percent / unzero_cost)
    content += '其中多天花费占比 不小于0.9的 比例:%.2f, 不小于0.5的 比例:%.2f\n' % (\
            float(multi_cost_percent_bigger_9)/unzero_cost , float(multi_cost_percent_bigger_5)/unzero_cost)
    content += '所有多天花费占所有全店多天花费的比例:%.2f,所有多天成交占所有全店多天成交的比例:%.2f\n' %(sum_multi_cost / sum_shop_multi_cost, sum_multi_pay / sum_shop_multi_pay)
    #content += '多天ROI大于0的用户的平均多天ROI:%.1f\n' % (sum_multi_roi / multi_roi_unzero)
    return content
def analysis_campaign_complex(file_name, campaign_name):
    """详细分析 某个计划"""

    campaign_list = []
    for line in file(file_name):
        campaign = Report.parser_report(line)
        if not campaign:
            continue
        if campaign['campaign'] == '账户整体情况':
            shop = campaign
            continue
        if campaign['campaign'].find(campaign_name) != -1:
            if campaign['nick'] != shop['nick']:
                print '出现不一致:',shop['nick']
            Report.add_shop(campaign, shop)
            #排除非正常 数据
            if campaign['count_days'] <= 0:
                continue
            if campaign['multi_cost'] > campaign['shop_multi_cost'] or \
                    campaign['multi_pay'] > campaign['shop_multi_pay']:
                continue
            campaign_list.append(campaign)

    zero_cost = 0
    multi_roi_zero = 0
    multi_roi_unzero = 0
    multi_roi_bigger_2 = 0
    
    sum_key_dict = {}
    main_keys = []
    daily_keys = ['multi_pv', 'multi_click', 'multi_cost', 'multi_pay', 'multi_pay_count']
    for key in MAIN_KEYS:
        main_keys.append(key)
        main_keys.append('shop_'+key)

    main_keys.extend(['multi_cost_percent', 'multi_pay_percent'])
    for key in main_keys:
        sum_key_dict[key] = 0
    for key in daily_keys:
        sum_key_dict['daily_'+key] = 0

    multi_cost_percent_bigger_9 = 0
    multi_cost_percent_bigger_5 = 0
    
    for campaign in campaign_list:
        if campaign['multi_cost'] <= 0:
            zero_cost += 1
            continue
                       
        for key in main_keys:
            sum_key_dict[key] += campaign[key]
        for key in daily_keys:
            sum_key_dict['daily_'+key] += campaign[key] / campaign['count_days']
        
        if campaign['multi_cost_percent'] >= 0.9:
            multi_cost_percent_bigger_9 += 1
        if campaign['multi_cost_percent'] >= 0.5:
            multi_cost_percent_bigger_5 += 1

        if campaign['multi_roi'] <= 0:
            multi_roi_zero += 1
        else:
            multi_roi_unzero += 1
            if campaign['multi_roi'] >= 2:
                multi_roi_bigger_2 += 1

    unzero_cost = len(campaign_list) - zero_cost
    
    content = campaign_name + '的分析\n'
    content += '用户数:%d, 花费为0数:%d,花费不为0数:%d, 如下统计针对多天花费不为0的用户\n' % (len(campaign_list), zero_cost, unzero_cost)
    content += '单天报表分析:\n'
    content += '昨日 平均花费:%.1f, 平均成交额:%.1f, 平均ROI:%.1f, 平均CPC:%.1f\n' % (\
            sum_key_dict['cost'] / unzero_cost / 100, sum_key_dict['pay'] / unzero_cost / 100, \
            sum_key_dict['pay'] / sum_key_dict['cost'], sum_key_dict['cost'] / sum_key_dict['click'] / 100)

    content += '昨日 平均展现:%d, 平均点击:%d, 平均点击率:%.3f, 平均转化率:%.3f\n' % (\
            sum_key_dict['pv'] / unzero_cost, sum_key_dict['click'] / unzero_cost, \
            sum_key_dict['click'] / (sum_key_dict['pv']+0.01), \
            sum_key_dict['pay_count'] / (sum_key_dict['click']+0.01))
    
    content += '多天报表分析:\n'
    content += '日均花费:%.1f, 日均成交额:%.1f, 日均ROI:%.1f, 日均CPC:%.1f\n' % (\
            sum_key_dict['daily_multi_cost'] / unzero_cost / 100, \
            sum_key_dict['daily_multi_pay'] / unzero_cost / 100, \
            sum_key_dict['daily_multi_pay'] / sum_key_dict['daily_multi_cost'],\
            sum_key_dict['daily_multi_cost'] / sum_key_dict['daily_multi_click'] / 100)

    content += '日均展现:%d, 日均点击:%d, 日均点击率:%.3f, 日均转化率:%.3f\n' % (\
            sum_key_dict['daily_multi_pv'] / unzero_cost, \
            sum_key_dict['daily_multi_click'] / unzero_cost, \
            sum_key_dict['daily_multi_click'] / (sum_key_dict['daily_multi_pv']+0.01),\
            sum_key_dict['daily_multi_pay_count'] / (sum_key_dict['daily_multi_click']+0.01))
    
    content += '多天ROI大于0数:%d,占比:%.1f,多天ROI大于2数:%d,占比:%.1f\n' %(multi_roi_unzero,\
            float(multi_roi_unzero) / unzero_cost, multi_roi_bigger_2, float(multi_roi_bigger_2) / unzero_cost)
    content += '其中该计划多天花费占全店花费比 不小于0.9的 比例:%.2f, 不小于0.5的 比例:%.2f\n' % (\
            float(multi_cost_percent_bigger_9)/unzero_cost , float(multi_cost_percent_bigger_5)/unzero_cost)
    content += '所有计划多天花费占所有全店多天 花费的比例:%.2f,所有计划多天成交占所有全店多天成交的比例:%.2f\n\n' %(sum_key_dict['multi_cost'] / sum_key_dict['shop_multi_cost'], sum_key_dict['multi_pay'] / sum_key_dict['shop_multi_pay'])
   
    return content