Usar DataFrames do BigQuery

Para receber suporte durante a prévia, envie um e-mail para bigframes-feedback@google.com.

Neste documento, descrevemos como usar o BigQuery DataFrames para analisar e manipular dados em um notebook do BigQuery.

O BigQuery DataFrames é uma biblioteca de cliente do Python que pode ser usada para analisar dados e realizar tarefas de machine learning nos notebooks do BigQuery.

Os BigQuery DataFrames consistem nas seguintes partes:

Antes de começar

  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. Verifique se a API BigQuery está ativada.

    Ativar a API

    Se você criou um novo projeto, a API BigQuery será ativada automaticamente.

Permissões necessárias

Para usar o BigQuery DataFrames em um notebook do BigQuery, você precisa dos seguintes papéis do Identity and Access Management (IAM):

Criar um notebook

Siga as instruções em Criar um notebook a partir do editor do BigQuery para criar um novo notebook.

Configurar opções do BigQuery DataFrames

Após a instalação, é preciso especificar o local e o projeto em que você quer usar o BigQuery DataFrames.

É possível definir o local e o projeto no notebook da seguinte maneira:

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

Usar bigframes.pandas

A API bigframes.pandas fornece uma API semelhante a pandas que pode ser usada para analisar e manipular dados no BigQuery. A API bigframes.pandas é escalonável para permitir o processamento de terabytes de dados do BigQuery e usa o mecanismo de consulta do BigQuery para realizar cálculos.

A API bigframes.pandas oferece os seguintes recursos:

Entrada e saída
É possível acessar dados de várias fontes, incluindo arquivos CSV locais, arquivos do Cloud Storage, DataFrames pandas, modelos do BigQuery e funções do BigQuery, e carregá-los em um DataFrame do BigQuery. Também é possível criar tabelas do BigQuery pelo BigQuery DataFrames.
Manipulação de dados
É possível usar o Python no lugar do SQL para o desenvolvimento. É possível desenvolver todas as manipulações de dados do BigQuery em Python, eliminando a necessidade de alternar entre linguagens e tentar capturar instruções SQL como strings de texto. A API bigframes.pandas oferece mais de 250 funções pandas.
Ecossistema e visualizações em Python
A API bigframes.pandas é um gateway para o ecossistema completo de ferramentas em Python. A API permite operações estatísticas avançadas, e é possível ver as agregações geradas pelo BigQuery DataFrames. Também é possível alternar de um DataFrame do BigQuery para um pandas com operações de amostragem integradas.
Funções personalizadas do Python
É possível usar funções e pacotes personalizados do Python. Com bigframes.pandas, é possível implantar funções remotas que executam funções Python escalares na escala do BigQuery. É possível manter essas funções de volta no BigQuery como rotinas SQL e usá-las como funções SQL.

Carregar dados de uma tabela ou consulta do BigQuery

É possível criar um DataFrame com base em uma tabela ou consulta do BigQuery da seguinte maneira:

# 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)

Carregar dados de um arquivo CSV

É possível criar um DataFrame com base em um arquivo CSV local ou do Cloud Storage da seguinte maneira:

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()

Inspecionar e manipular dados

É possível usar bigframes.pandas para realizar operações de inspeção e cálculo de dados.

O exemplo de código a seguir mostra o uso de bigframes.pandas para inspecionar a coluna body_mass_g, calcular a body_mass média e calcular a média 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)
)

Usar bigframes.ml

A API bigframes.ml semelhante a scikit-learn permite criar vários tipos de modelos de machine learning.

Regressão

O exemplo de código abaixo mostra o uso de bigframes.ml para realizar as seguintes ações:

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)

Clustering

Use o módulo bigframes.ml.cluster para criar estimadores para modelos de clustering.

O exemplo de código a seguir mostra o uso da classe bigframes.ml.cluster KMeans para criar um modelo de clustering K-means para segmentação de dados:

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 LLM remotos

É possível usar o módulo bigframes.ml.llm para criar estimadores para modelos de linguagem grandes (LLMs) remotos.

O exemplo de código a seguir mostra o uso da classe bigframes.ml.llm PaLM2TextGenerator para criar um modelo gerador de texto PaLM2 para geração 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)

Preços

O DataFrames do BigQuery é uma biblioteca Python de código aberto. O código-fonte está disponível para visualização e download no GitHub. É possível instalar a biblioteca PyPI. A biblioteca também pode estar disponível em outros gerenciadores de pacotes gerenciados pela comunidade.

O DataFrames do BigQuery usa o BigQuery, o Cloud Functions, a Vertex AI e outros serviços do Google Cloud, que têm custos próprios. Durante o uso regular, a biblioteca armazena dados em tabelas intermediárias do BigQuery, que têm uma duração de sete dias por padrão.

A seguir