New to Claude Skills? Learn how to install them →

google on GitHub

BigQuery BigFrames

Free

Leverage BigQuery with familiar Python DataFrame APIs.

by google17.6k stars on google/skills
1 views
Updated Aug 10, 2026
Get this skill

Free · Opens the source repo

What BigQuery BigFrames does

BigQuery BigFrames is a Python library designed to integrate BigQuery's powerful data processing capabilities with a familiar DataFrame API, similar to that of pandas and scikit-learn. This skill is particularly useful for data scientists and developers who want to perform data cleaning, transformation, and analysis directly within BigQuery without the need to download data locally. By using BigFrames, users can execute operations at scale, taking advantage of BigQuery's distributed computing resources.

The library encourages best practices such as enabling partial ordering mode to speed up data processing and using methods like peek() for efficient data sampling. It emphasizes the importance of staying within the cloud environment to avoid the pitfalls of local data materialization, which can lead to memory issues. Users are guided to prefer DataFrame operations over raw SQL queries, ensuring that they maintain the benefits of lazy query execution and avoid unnecessary complexity.

For machine learning tasks, BigFrames provides a dedicated package that allows users to train models directly in BigQuery, avoiding the need to load data into local memory. This is crucial for handling large datasets and leveraging BigQuery's scalable ML engine. Additionally, the skill includes references for implementing linear and logistic regression models, making it easier for users to get started with machine learning in the BigQuery context.

Overall, BigQuery BigFrames is tailored for those who work with large datasets in BigQuery and prefer a Pythonic approach to data manipulation and machine learning, making it an essential tool for data-centric workflows.

When to use it

Use this skill when you want to perform data analysis or machine learning tasks on large datasets directly within BigQuery using Python's DataFrame API.

When not to use it

Avoid this skill if your workflow relies heavily on SQL queries or if you need to use the google-cloud-bigquery client library for direct SQL operations.

What you can build with it

Data Analysis in Notebooks

Use BigFrames to analyze large datasets in Jupyter notebooks without downloading data locally, leveraging BigQuery's processing power.

Machine Learning on BigQuery Data

Train machine learning models directly in BigQuery using the `bigframes.bigquery.ml` package, avoiding memory constraints.

Efficient Data Cleaning

Perform data cleaning and transformation operations directly in BigQuery with familiar DataFrame methods to enhance productivity.

How to install BigQuery BigFrames

View source

1. Install with the skills CLI

npx skills add google/skills/bigquery-bigframes --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by google

BigFrames (BigQuery DataFrame) basics

BigFrames is a Python library that lets you take advantage of BigQuery data processing by using familiar Python APIs.

Dataframe API best practices

  • Stay in the Cloud: Perform data cleaning, transformation, and analysis via BigFrames methods to leverage BigQuery's scale rather than downloading data.
  • Prefer partial ordering mode: Enable partial ordering mode right after importing BigFrames. This speeds up data processing significantly by relaxing row-sequence constraints.
    import bigframes.pandas as bpd
    bpd.options.bigquery.ordering_mode = 'partial'
    
  • Use peek() for data preview: Use peek(n) to preview data instead of head(n). peek(n) randomly samples n rows and is significantly faster. head(n) returns rows in strict order and fails in partial ordering mode unless the DataFrame has been explicitly sorted.
  • Avoid materializing data locally: Methods like to_pandas() download all data to client memory, bypassing BigQuery’s distributed computation and risking Out of Memory (OOM) errors. Do not materialize data locally unless:
    • The dataset is small enough to fit safely in memory.
    • An error message explicitly requires local materialization.
  • Prefer Dataframe API over SQL queries: Do not write raw SQL queries via read_gbq() if a DataFrame/Series method achieves the same result, as it breaks the Pandas abstraction and prevents lazy query execution.
  • Accessors over UDFs/Lambdas:
    • Use built-in accessors (e.g., df.col.str.*, df.col.dt.*) instead of remote User Defined Functions (UDFs). UDFs require extra resources and time to deploy.
    • Do not use lambdas with Series.map() or DataFrame.apply(). These methods do not accept functions without udf or remote_function decorators.
    # Avoid:
    df["upper"] = df["name"].map(lambda x: x.upper())
    
    # Prefer:
    df["upper"] = df["name"].str.upper()
    
  • Schema Verification: Do not assume the schema of intermediate outputs. Proactively verify schemas using .dtypes and inspect sample records using display() with .peek().
  • Visualization: Plot directly from the BigFrames DataFrame/Series when possible. BigFrames is compatible with Matplotlib and Seaborn. If direct plotting fails, use the .plot accessor. If the dataset is too large to plot, aggregate or sample the data before calling .to_pandas() to plot locally.

Machine Learning

  • Use bigframes.bigquery.ml package: Do not use Scikit-learn or other ML libraries with BigQuery DataFrames. Standard Scikit-learn models require bringing data into local client memory, whereas bigframes.bigquery.ml delegates training directly to BigQuery's scalable ML engine. Import functions from bigframes.bigquery.ml.

Reference Directory

BigFrames ML (Legacy)

The BigFrames ML package (bigframes.ml) is a legacy package that mimics the scikit-learn API but is no longer recommended for new projects. Only use this package if the user explicitly requests BigFrames ML.

  • Legacy Imports: When legacy BigFrames ML is requested, import tools and classes from bigframes.ml instead of bigframes.bigquery.ml.
  • DataFrame Return on Prediction: Unlike Scikit-learn, BigFrames' predict() method always returns a DataFrame containing both predictions and features, rather than a single series of predictions.
  • No random_state: Do not pass a random_state argument when instantiating BigFrames ML models, as this parameter is not supported in the BigFrames ML package.
  • Automatic Scaling: Do not use OneHotEncoder or StandardScaler unless explicitly requested, as scaling is handled automatically.
  • Hyperparameter Tuning: Write custom loops for hyperparameter tuning, as BigFrames lacks GridSearchCV or RandomizedSearchCV.
  • ARIMA Plus (Forecasting):
    • Import from bigframes.ml.forecasting.
    • Sort data chronologically and split around a timepoint before training.
    • Ensure the prediction horizon is less than or equal to the training horizon.
  • PCA: BigFrames' PCA class lacks a transform() method. Use predict() instead.
  • Model Persistence: To persist a model, use model.to_gbq(). To load a persisted model, use bpd.read_gbq_model().

Frequently asked questions about BigQuery BigFrames

Similar skills