【发布时间】:2017-09-14 14:51:28
【问题描述】:
我正在尝试为我的 Google Analytics(分析)帐户构建一个 API,以将数据导出为 CSV。我的身份验证代码正常工作,但我现在正在努力以我想要的格式打印数据。
我暂时只拉维度国家、维度城市、度量会话。 (但是,当我开始工作时,这些会改变。)现在,它会打印:
Date Range(0)
ga:sessions: 2
ga:country:United States
ga:city:Los Angeles
...
但是,我想把它放在一行中:
date Range sessions country city
0 2 USA Los Angeles
...
我需要使用 Python 中的哪些代码?下面是我所拥有的。
def initialize_analyticsreporting():
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter,
parents=[tools.argparser])
flags = parser.parse_args([])
http = credentials.authorize(httplib2.Http())
service = build('analytics', 'v4', http=http, discoveryServiceUrl=('https://analyticsreporting.googleapis.com/$discovery/rest'))
def get_report(service):
return service.reports().batchGet(
body={
'reportRequests':[
{
"viewId": "ga:52783868",
"dimensions": [{
"name": "ga:country"},
{"name": "ga:city"}],
"metrics": [{
"expression": "ga:sessions"}],
"dateRanges": [{
"startDate": "2017-04-10",
"endDate": "2017-04-12"}]
}
]
}
).execute()
countries = []
cities = []
val = []
def print_reponse(response):
for report in response.get('reports', []):
columnHeader = report.get('columnHeader',{})
dimensionHeaders=columnHeader.get('columnHeader',[])
metricHeaders = columnHeader.get('metricHeader',{}).get('metricHeaderEntries',[])
rows = report.get('data',{}).get('rows',[])
for row in rows:
dimensions = row.get('dimensions',[])
dateRangeValues=row.get('metrics',[])
for header, dimension in zip(dimensionHeaders,dimensions):
print(header+':'+dimension)
for i, values in enumerate(dateRangeValues):
for metricHeader, value in zip(metricHeaders, values.get('values')):
print(metricHeader.get('name')+':'+value)
def main():
analytics = initialize_analyticsreporting()
response = get_report(service)
print_reponse(response)
if __name__ == '__main__':
main()
【问题讨论】:
-
我建议你使用this library。将其放入
pandas数据帧中的一个,您可以执行任何类型的操作,写入csv 将类似于to_csv。干杯。 -
@Irnzcig 你能用 Java 帮忙吗
标签: python csv google-analytics google-api-python-client