Usa BigQuery DataFrames

Para obtener asistencia durante la vista previa, envía un correo electrónico a bigframes-feedback@google.com.

En este documento, se describe cómo puedes usar los BigQuery DataFrames para analizar y manipular datos en un notebook de BigQuery.

BigQuery DataFrames es una biblioteca cliente de Python que puedes usar para analizar datos y realizar tareas de aprendizaje automático en notebooks de BigQuery.

BigQuery DataFrames consta de las siguientes partes:

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Make sure that billing is enabled for your Google Cloud project.

  5. Asegúrate de que la API de BigQuery esté habilitada.

    Habilitación de la API

    Si creaste un proyecto nuevo, la API de BigQuery se habilita automáticamente.

Permisos necesarios

Para usar BigQuery DataFrames en un notebook de BigQuery, necesitas las siguientes funciones de Identity and Access Management (IAM):

Crea un notebook

Sigue las instrucciones en Crea un notebook desde el editor de BigQuery para crear un notebook nuevo.

Configura las opciones de BigQuery DataFrames

Después de la instalación, debes especificarubicación yproyecto en la que desea usar BigQuery DataFrames.

Puedes definir la ubicación y el proyecto en el notebook de la siguiente manera:

import bigframes.pandas as bpd

PROJECT_ID = "bigframes-dec"  # @param {type:"string"}
REGION = "US"  # @param {type:"string"}

# Set BigQuery DataFrames options
bpd.options.bigquery.project = PROJECT_ID
bpd.options.bigquery.location = REGION

Usa bigframes.pandas

La API de bigframes.pandas proporciona una API similar a pandas que puedes usar para analizar y manipular datos en BigQuery. La API de bigframes.pandas es escalable para admitir el procesamiento de terabytes de datos de BigQuery y usa el motor de consulta de BigQuery para realizar cálculos.

La API de bigframes.pandas proporciona las siguientes funciones:

INPUT y OUTPUT
Puedes acceder a los datos de una variedad de fuentes, incluidos los archivos CSV locales, los archivos de Cloud Storage, los DataFrames pandas, los modelos de BigQuery y las funciones de BigQuery, y cargarlos en DataFrame de BigQuery. También puedes crear tablas de BigQuery DataFrames de BigQuery.
Manipulación de datos
Puedes usar Python en lugar de SQL para el desarrollo. Puedes desarrollar todas las manipulaciones de datos de BigQuery en Python, lo que elimina la necesidad de cambiar entre lenguajes y de capturar instrucciones de SQL como cadenas de texto. La API bigframes.pandas ofrece más de 250 funciones pandas.
Ecosistema y visualizaciones de Python
La API de bigframes.pandas es una puerta de enlace al ecosistema completo de herramientas de Python. La API es compatible con operaciones estadísticas avanzadas, y puedes visualizar las agregaciones generadas a partir de BigQuery DataFrames. También puedes cambiar de un DataFrame de BigQuery a un DataFrame de pandas con operaciones de muestreo integradas.
Funciones personalizadas de Python
Puedes usar funciones y paquetes personalizados de Python. Con bigframes.pandas, puedes implementar funciones remotas que ejecutan funciones escalares de Python a escala de BigQuery. Puedes conservar estas funciones en BigQuery como rutinas de SQL y usarlas como funciones de SQL.

Carga datos desde una tabla o consulta de BigQuery

Puedes crear un DataFrame a partir de una consulta o tabla de BigQuery de la siguiente manera:

# Create a DataFrame from a BigQuery table:
import bigframes.pandas as bpd

query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

Carga datos de un archivo CSV

Puedes crear un DataFrame a partir de un archivo CSV local o de Cloud Storage de la siguiente manera:

import bigframes.pandas as bpd

filepath_or_buffer = "gs://cloud-samples-data/bigquery/us-states/us-states.csv"
df_from_gcs = bpd.read_csv(filepath_or_buffer)
# Display the first few rows of the DataFrame:
df_from_gcs.head()

Inspecciona y manipula datos

Puedes usar bigframes.pandas para realizar operaciones de inspección y cálculo de datos.

En la siguiente muestra de código, se usa bigframes.pandas para inspeccionar la columna body_mass_g, calcular la media body_mass y calcular la media body_mass por species:

import bigframes.pandas as bpd

# Load data from BigQuery
query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

# Inspect one of the columns (or series) of the DataFrame:
bq_df["body_mass_g"]

# Compute the mean of this series:
average_body_mass = bq_df["body_mass_g"].mean()
print(f"average_body_mass: {average_body_mass}")

# Find the heaviest species using the groupby operation to calculate the
# mean body_mass_g:
(
    bq_df["body_mass_g"]
    .groupby(by=bq_df["species"])
    .mean()
    .sort_values(ascending=False)
    .head(10)
)

Usa bigframes.ml

La API de scikit-learn similar a bigframes.ml te permite crear varios tipos de modelos de aprendizaje automático.

Regresión

En la siguiente muestra de código, se usa bigframes.ml para hacer lo siguiente:

from bigframes.ml.linear_model import LinearRegression
import bigframes.pandas as bpd

# Load data from BigQuery
query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

# Filter down to the data to the Adelie Penguin species
adelie_data = bq_df[bq_df.species == "Adelie Penguin (Pygoscelis adeliae)"]

# Drop the species column
adelie_data = adelie_data.drop(columns=["species"])

# Drop rows with nulls to get training data
training_data = adelie_data.dropna()

# Specify your feature (or input) columns and the label (or output) column:
feature_columns = training_data[
    ["island", "culmen_length_mm", "culmen_depth_mm", "flipper_length_mm", "sex"]
]
label_columns = training_data[["body_mass_g"]]

test_data = adelie_data[adelie_data.body_mass_g.isnull()]

# Create the linear model
model = LinearRegression()
model.fit(feature_columns, label_columns)

# Score the model
score = model.score(feature_columns, label_columns)

# Predict using the model
result = model.predict(test_data)

Agrupamiento en clústeres

Puedes usar el módulo bigframes.ml.cluster para crear estimadores para los modelos de agrupamiento en clústeres.

En la siguiente muestra de código, se usa la clase bigframes.ml.cluster KMeans para crear un modelo de agrupamiento en clústeres de k-means para la segmentación de datos:

from bigframes.ml.cluster import KMeans
import bigframes.pandas as bpd

# Load data from BigQuery
query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

# Create the KMeans model
cluster_model = KMeans(n_clusters=10)
cluster_model.fit(bq_df["culmen_length_mm"], bq_df["sex"])

# Predict using the model
result = cluster_model.predict(bq_df)
# Score the model
score = cluster_model.score(bq_df)

Modelos remotos de LLM

Puedes usar el módulo bigframes.ml.llm para crear estimadores para modelos remotos grandes de lenguaje (LLM).

En la siguiente muestra de código, se usa la clase bigframes.ml.llm PaLM2TextGenerator para crear un modelo de generador de texto de PaLM2 para la generación de texto:

from bigframes.ml.llm import PaLM2TextGenerator
import bigframes.pandas as bpd

# Create the LLM model
session = bpd.get_global_session()
connection = f"{PROJECT_ID}.{REGION}.{CONN_NAME}"
model = PaLM2TextGenerator(session=session, connection_name=connection)

df_api = bpd.read_csv("gs://cloud-samples-data/vertex-ai/bigframe/df.csv")

# Prepare the prompts and send them to the LLM model for prediction
df_prompt_prefix = "Generate Pandas sample code for DataFrame."
df_prompt = df_prompt_prefix + df_api["API"]

# Predict using the model
df_pred = model.predict(df_prompt.to_frame(), max_output_tokens=1024)

Precios

BigQuery DataFrames es una biblioteca de código abierto de Python. El código fuente está disponible para verlo y descargarlo mediante GitHub. Puedes instalar la biblioteca desde PyPI. Es posible que la biblioteca también esté disponible en otros administradores de paquetes administrados por la comunidad.

BigQuery DataFrames utiliza BigQuery, Cloud Functions, Vertex AI y otros servicios de Google Cloud, que generan sus propios costos. Durante el uso regular, la biblioteca almacena datos en tablas intermedias de BigQuery, que tienen una duración de siete días de forma predeterminada.

¿Qué sigue?