python - Google Analytics 对 Python 中 Pandas Dataframe 的响应
问题描述
仍然是 Python 的新手,所以请保持温柔。
我正在尝试在 Python 中解析对 Pandas 数据框的 Google Analytics Reporting API V4 响应,特别是使用 Repl 如果这有什么不同。我已经尝试了一些来自 SO 的普遍接受的答案,但似乎没有一个有效。代码“成功”(无错误消息)执行,但即使是脚本末尾的基本 print('Done') 命令也没有显示在终端中。
谁能看到我的代码可能有什么问题?
import pandas as pd
from pandas import json_normalize
response = {'reports':[{'columnHeader':{'dimensions':['ga:date','ga:sourceMedium','ga:landingPagePath','ga:deviceCategory','ga:browser'],'metricHeader':{'metricHeaderEntries':[{'name':'ga:sessions','type':'INTEGER'}]}},'data':{'rows':[{'dimensions':['20201126','(direct) / (none)','/test/page.html','desktop','Chrome'],'metrics':[{'values':['1']}]}],'totals':[{'values':['1000']}],'rowCount':100,'minimums':[{'values':['1']}],'maximums':[{'values':['10']}],'isDataGolden':True},'nextPageToken':'1'}]}
def parse_data(response):
reports = response['reports'][0]
columnHeader = reports['columnHeader']['dimensions']
metricHeader = reports['columnHeader']['metricHeader']['metricHeaderEntries']
columns = columnHeader
for metric in metricHeader:
columns.append(metric['name'])
data = pd.json_normalize(reports['data']['rows'])
data_dimensions = pd.DataFrame(data['dimensions'].tolist())
data_metrics = pd.DataFrame(data['metrics'].tolist())
data_metrics = data_metrics.applymap(lambda x: x['values'])
data_metrics = pd.DataFrame(data_metrics[0].tolist())
result = pd.concat([data_dimensions, data_metrics], axis=1, ignore_index=True)
return result
print(result)
result.to_csv('result.csv')
print('Done')
解决方案
return
这是因为在给定的函数中,语句之后发生的任何代码都不会执行。一旦return
达到,功能就完成了。如果您将print
调用和to_csv
方法放在return
语句之前,它们应该运行。
尝试重新组织您的代码:
def parse_data(response):
reports = response['reports'][0]
columnHeader = reports['columnHeader']['dimensions']
metricHeader = reports['columnHeader']['metricHeader']['metricHeaderEntries']
columns = columnHeader
for metric in metricHeader:
columns.append(metric['name'])
data = pd.json_normalize(reports['data']['rows'])
data_dimensions = pd.DataFrame(data['dimensions'].tolist())
data_metrics = pd.DataFrame(data['metrics'].tolist())
data_metrics = data_metrics.applymap(lambda x: x['values'])
data_metrics = pd.DataFrame(data_metrics[0].tolist())
result = pd.concat([data_dimensions, data_metrics], axis=1, ignore_index=True)
print(result)
result.to_csv('result.csv')
print('Done')
return result
推荐阅读
- authentication - 使用电话号码功能登录
- javascript - 如何在字符串中搜索“x”或“任意数字”?
- r - 如何使用 rmarkdown::draft() 创建标准的 pdf_document 模板?
- macos - .plist 上的“默认写入 ...”但不起作用
- javascript - 如何在 React 中创建本地推送通知?
- java - 不支持 Docker-Compose 版本
- ibm-watson - 下载适用于 Microsoft Windows 64 位的 IBM Watson Studio 桌面试用版时出现问题
- php - 使用 PHP 在浏览器上运行 composer
- python - Python Selenium 脚本...使用 XPATH 获取文本
- google-apps-script - Google 表单上的动态相关下拉菜单