BigQuery DataFrames (also known as BigFrames) provides a Pythonic DataFrame and machine learning (ML) API powered by the BigQuery engine.
- bigframes.pandas provides a pandas API for analytics. Many workloads can be migrated from pandas to bigframes by just changing a few imports.
 bigframes.mlprovides a scikit-learn-like API for ML.
BigQuery DataFrames is an open-source package.
Version 2.0 introduces breaking changes for improved security and performance. See below for details.
The easiest way to get started is to try the BigFrames quickstart in a notebook in BigQuery Studio.
To use BigFrames in your local development environment,
- Run 
pip install --upgrade bigframesto install the latest version. - Setup Application default credentials for your local development environment enviroment.
 - Create a GCP project with the BigQuery API enabled.
 - Use the 
bigframespackage to query data. 
import bigframes.pandas as bpd
bpd.options.bigquery.project = your_gcp_project_id
df = bpd.read_gbq("bigquery-public-data.usa_names.usa_1910_2013")
print(
    df.groupby("name")
    .agg({"number": "sum"})
    .sort_values("number", ascending=False)
    .head(10)
    .to_pandas()
)To learn more about BigQuery DataFrames, visit these pages
Version 2.0 introduces breaking changes for improved security and performance. Key default behaviors have changed, including
- Large Results (>10GB): The default value for 
allow_large_resultshas changed toFalse. Methods liketo_pandas()will now fail if the query result's compressed data size exceeds 10GB, unless large results are explicitly permitted. - Remote Function Security: The library no longer automatically lets the Compute Engine default service
account become the identity of the Cloud Run functions. If that is desired, it has to be indicated by passing
cloud_function_service_account="default". And network ingress now defaults to"internal-only". - @remote_function Argument Passing: Arguments other than 
input_types,output_type, anddatasettoremote_functionmust now be passed using keyword syntax, as positional arguments are no longer supported. - @udf Argument Passing: Arguments 
datasetandnametoudfare now mandatory. - Endpoint Connections: Automatic fallback to locational endpoints in certain regions is removed.
 - LLM Updates (Gemini Integration): Integrations now default to the 
gemini-2.0-flash-001model. PaLM2 support has been removed; please migrate any existing PaLM2 usage to Gemini. Note: The current default model will be removed in Version 3.0. 
Important: If you are not ready to adapt to these changes, please pin your dependency to a version less than 2.0
(e.g., bigframes==1.42.0) to avoid disruption.
To learn about these changes and how to migrate to version 2.0, see the updated introduction guide.
BigQuery DataFrames is distributed with the Apache-2.0 license.
It also contains code derived from the following third-party packages:
For details, see the third_party directory.
For further help and provide feedback, you can email us at bigframes-feedback@google.com.