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。通常我的问题是关于上面的代码和语法。
Joh*_*nck 13
您应该使用read_gbq(): https: //pandas.pydata.org/pandas-docs/stable/ generated/pandas.read_gbq.html
小智 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.