如何对 Pandas 数据帧进行隐蔽 Google 分析 API 响应

How to Covert Google analtics API response to Pandas data frame

提问人:Linda Lawton - DaImTo 提问时间:11/13/2023 最后编辑:Linda Lawton - DaImTo 更新时间:11/14/2023 访问量:43

问:

我有一些代码可以使用 Google Analtics 数据 API 从 Google Analytics 导出数据。

def sample_run_report(credentials=None, property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a simple report on a Google Analytics 4 property."""

client = BetaAnalyticsDataClient(credentials=credentials)
dates = [DateRange(start_date="7daysAgo", end_date='today')]
metrics = [Metric(name='activeUsers')]
dimensions = [], #[Dimension(name='city')]
request = RunReportRequest(
    property=f'properties/{property_id}',
    metrics=metrics,
    date_ranges=dates,
)

response = client.run_report(request)
print(response)

此代码适用于文件,它导出 API 的标准响应中的数据。

{
  "dimensionHeaders": [
    {
      object (DimensionHeader)
    }
  ],
  "metricHeaders": [
    {
      object (MetricHeader)
    }
  ],
  "rows": [
    {
      object (Row)
    }
  ]
 .....
}

我想将其格式化为 pandas dataFrame,但我一直找不到任何将其输出为 dataFrame 的方法。

python pandas google-analytics-api google-api-python-client

评论


答:

0赞 Linda Lawton - DaImTo 11/13/2023 #1

Google Analytics(分析)数据 API 仅以单一格式导出数据。我能够创建一个方法,将响应转换为 Pandas DataFrame

def covert_to_pandas(data):

    # Grab all the columns in the result
    columns = []
    for col in data.dimension_headers:
        columns.append(col.name)
    for col in data.metric_headers:
        columns.append(col.name)

    # Grab all the rows in the result.
    rows = []
    for row_data in data.rows:
        row = []
        for val in row_data.dimension_values:
            row.append(val.value)
        for val in row_data.metric_values:
            row.append(val.value)
        rows.append(row)

    # convert to data frame
    return pd.DataFrame(rows, columns=columns)

注意

如果要将其与任何图形一起使用,请确保添加以下内容。

df = df.astype(float)

否则你会得到一个错误

raise TypeError(“没有要绘制的数值数据”) TypeError:没有要绘制的数值数据

这是由于类型是 object。

现在我可以使用它了

enter image description here

使用 Python 和 Pandas 检查 Google Analytics GA4 数据。