将 Bigquery 结果转换为 Pandas 数据框

use*_*823 5 python dataframe pandas google-bigquery

下面是将 BigQuery 结果转换为 Pandas 数据框的代码。我正在学习 Python 和 Pandas,想知道我是否可以获得有关代码改进的建议/想法?

#...code to run query, that returns 3 columns: 'date' DATE, 'currency' STRING,'rate' FLOAT...

rows, total_count, token = query.fetch_data()
currency = []
rate = []
dates = []
for row in rows:
    dates.append(row[0])
    currency.append(row[1])
    rate.append(row[2])


dict = {
'currency' : currency,
'date' : dates,
'rate' : rate
}

df2 = pd.DataFrame(dict)

df2['date'] = pd.to_datetime(df2['date'])
df2 = df2.set_index('date')
Run Code Online (Sandbox Code Playgroud)

以上工作。但看起来很矮。有什么方法可以比上述更有效地做同样的事情吗?我尝试过诸如 sqlalchemy 之类的库,但它们不支持 BigQuery。通常我的问题是关于上面的代码和语法。

小智 10

截至 2023 年 3 月 23 日,

您可以一键直接将 BigQuery 结果转换为 pandas dataframe!(使用Google Cloud官方提供的python库)

from google.cloud import bigquery
import pandas as pd

client = bigquery.Client()

sql = """
    SELECT name, SUM(number) as count
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    GROUP BY name
    ORDER BY count DESC
    LIMIT 10
"""

df = client.query(sql).to_dataframe()
Run Code Online (Sandbox Code Playgroud)

参考: https://cloud.google.com/bigquery/docs/samples/bigquery-query-results-dataframe


小智 6

根据适用于 Python 的 Google Cloud 客户端库中的将 BigQuery 与 Pandas 一起使用页面:

从版本 0.29.0 开始,您可以使用 to_dataframe() 函数以 pandas.DataFrame 形式检索查询结果或表行。

旁白:请参阅从 pandas-gbq 迁移,了解google-cloud-bigqueryBQ Python 客户端库和pandas-gbq.