友盟爱恨情仇之自定义事件流量数据获取——python语言版

持续更新中……


上篇写了友盟Open API接口的基本调用
友盟爱恨情仇之Open API接口文档(python版)
本文基于Open API接口,用Python实现自定义事件基本流量数据的获取


加载相关模块

import requests
import pandas as pd
import numpy as np

函数构建:获取事件消息数/独立用户数

在实际app业务场景中,常有一个业务配置多个入口的场景,如下例:

业务 系统 入口事件 group_id
业务A Android 位置1 group_id10001
iphone 位置2 group_id10002
业务B Android 位置1 group_id10001
Android 位置2 group_id10002
iphone 位置3 group_id20003
iphone 位置4 group_id20004

基于此类场景,构造一个函数分别获取各个入口的流量数据,并进行汇总统计

#获取事件消息数/独立用户数
def get_event_data(appkey,group_id,start_date,end_date,auth_token):
    #为PV跟UV定义不同的接口url
    pv_url = 'http://api.umeng.com/events/daily_data?appkey=%s&group_id=%s&type=count&start_date=%s&end_date=%s&auth_token=%s'%(appkey,group_id,start_date,end_date,auth_token)
    uv_url = 'http://api.umeng.com/events/daily_data?appkey=%s&group_id=%s&type=device&start_date=%s&end_date=%s&auth_token=%s'%(appkey,group_id,start_date,end_date,auth_token)
    pv_response = requests.get(pv_url).json()
    uv_response = requests.get(uv_url).json()
    #将PV、UV数据分别存为DataFrame对象,并进行merge操作将数据合并
    pv_data = pd.DataFrame({'dates':pv_response['dates'], 'pv':pv_response['data']['all']})
    uv_data = pd.DataFrame({'dates':uv_response['dates'], 'uv':uv_response['data']['all']})
    aggregated_data = pv_data.merge(uv_data, how='left', on='dates')
    return aggregated_data


#调用get_event_data()函数,分别统计android、iphone两个app的流量数据
def get_data(event,start_date,end_date):
    data = pd.DataFrame(columns=['dates','pv','uv'])
    #统计android端某位置点击数据
    for group_id in events_list[event]['android']:
        data = pd.concat([data, get_event_data(android_key,group_id,start_date,end_date,auth_token)]).reset_index(drop=True)
    #统计iphone端某位置点击数据
    for group_id in events_list[event]['iphone']:
        data = pd.concat([data, get_event_data(iphone_key,group_id,start_date,end_date,auth_token)]).reset_index(drop=True)
    #汇总数据
    result = data.groupby(data['dates']).agg({'pv':np.sum, 'uv':np.sum})
    return result

数据准备

通过上篇文章中的authorize()、apps()函数,可获取到相关的token, appkey列表
本次获取数据如下(实际代码中应替换成自己的数据):

参数
auth_token token1111111
android_key android_key11111
iphone_key iphone_key111111

数据获取

auth_token = 'token1111111'
android_key = 'android_key11111'
iphone_key = 'iphone_key111111'

events_list = {
    '业务A':{'android':['group_id10001'],'iphone':['group_id10002']},
    '业务B':{'android':['group_id10001','group_id10002'],
            'iphone':['group_id20003','group_id20004']}
}

data_a = get_data('业务A', '2018-08-01', '2018-08-25')
data_b = get_data('业务B', '2018-08-01', '2018-08-25')

下篇预告:获取带参数的自定义事件点击流量~

你可能感兴趣的:(友盟爱恨情仇之自定义事件流量数据获取——python语言版)