持续更新中……
上篇写了友盟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')
下篇预告:获取带参数的自定义事件点击流量~