3

我正在通过pandas和 Google Analytics API 自动化一些报告。当请求分割数据的多个维度时,生成的记录集远高于 pandas 施加的默认 10k max_result 限制。

为了解决这个问题,我为 max_results 参数传递了一个大数字并指定了一个块大小。我的意图是然后迭代生成的生成器以创建一个大型 DataFrame,我可以在其上执行所有操作。

from pandas.io import ga
import pandas as pd

max_results = 1000000
chunks = ga.read_ga(metrics=["visits"],
                    dimensions=["date", "browser", "browserVersion",
                    "operatingSystem", "operatingSystemVersion",
                    "isMobile", "mobileDeviceInfo"],
                    start_date="2012-12-01",
                    end_date="2012-12-31",
                    max_results=max_results,
                    chunksize=5000)

stats = pd.concat([chunk for chunk in chunks])
stats.groupby(level="date").sum()

但是,很明显,由于每日总访问量与 Google Analytics(分析)不匹配,因此并未提取某些记录。

仅选择几个维度时,我不会遇到此问题。例如 ...

test = ga.read_ga(metrics=["visits"], dimensions=["date"],
            start_date="2012-12-01", end_date="2012-12-31")

test.groupby(level="date").sum()

...产生与谷歌分析相同的数字。

在此先感谢您的帮助。

4

1 回答 1

1

总共 10000 行是 google 分析 API 施加的限制 ( https://developers.google.com/analytics/devguides/reporting/core/v3/reference#maxResults )

该代码使用 start_index 发出多个请求并绕过限制。我将此标记为熊猫中的错误:https ://github.com/pydata/pandas/issues/2805 有机会我会看看。如果您可以显示一些预期数据与您通过 pandas 获得的数据,那将很有帮助。

作为一种解决方法,我建议每天迭代并提出每日请求。

于 2013-02-06T05:24:07.480 回答