3

私はパンダとGoogleAnalyticsAPIを介していくつかのレポートを自動化することに取り組んでいます。データを分割するために複数のディメンションを要求すると、結果のレコードセットは、パンダによって課されるデフォルトの10kmax_result制限をはるかに上回ります。

これを回避するために、max_resultsパラメーターに多数を渡し、チャンクサイズを指定しています。次に、結果のジェネレーターを反復処理して、すべての操作を実行できる1つの大きな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()

ただし、1日の全体的な訪問数がGoogleアナリティクスと一致しないため、一部のレコードが取得されていないことは明らかです。

いくつかのディメンションのみを選択した場合、この問題は発生しません。例えば ​​...

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

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

...GoogleAnalyticsと同じ数値を生成します。

助けてくれてありがとう。

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 機会があればいつでも調べます。期待されるデータとパンダを介して得られるデータを表示できれば、役に立ちます。

回避策として、毎日繰り返して、毎日リクエストすることをお勧めします。

于 2013-02-06T05:24:07.480 に答える