Usar DataFrames do BigQuery
O BigQuery DataFrames fornece um DataFrame e uma API de machine learning (ML) em Python com tecnologia do mecanismo do BigQuery.
O DataFrames do BigQuery é um pacote de código aberto. Execute
pip install --upgrade bigframes
para instalar a versão mais recente.
O DataFrames do BigQuery oferece duas bibliotecas:
bigframes.pandas
, que fornece uma API compatível com pandas para análise.bigframes.ml
, que fornece uma API semelhante ao scikit-learn para machine learning (ML).
Permissões necessárias
Você precisa ter os papéis Usuário de jobs do BigQuery e Usuário de sessão de leitura do BigQuery para usar o DataFrames do BigQuery.
Quando você está executando a autenticação de usuário final em um ambiente interativo, como um notebook, REPL do Python ou a linha de comando, o DataFrames do BigQuery solicita autenticação, se necessário. Caso contrário, consulte como configurar as credenciais padrão do aplicativo para vários ambientes.
Requisitos adicionais de gerenciamento de identidade e acesso (IAM) se aplicam ao uso de funções remotas e modelos remotos de ML.
Para usar o DataFrames do BigQuery em um notebook do BigQuery, você precisa dos seguintes papéis do IAM:
Opções
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:
Local de processamento dos dados
O DataFrames do BigQuery foi projetado para escalonar, o que é alcançado mantendo os dados e o processamento no serviço do BigQuery. No entanto, é possível transferir dados para a
memória da máquina cliente chamando .to_pandas()
em um objeto DataFrame ou Series. Se
você optar por fazer isso, a limitação de memória da máquina cliente
será aplicada.
Local da sessão
O BigQuery DataFrames usa um objeto de sessão local para gerenciar metadados internamente. Essa sessão está vinculada a um
local. O DataFrames do BigQuery usa
a multirregião US
como o local padrão, mas é possível usar
session_options.location
para definir um local diferente. Cada consulta em uma
sessão é executada no local em que a sessão foi criada.
O BigQuery DataFrames preenche automaticamente
bf.options.bigquery.location
com o local da tabela se o
usuário começar com read_gbq/read_gbq_table/read_gbq_query()
e
especificar uma tabela, diretamente ou em uma instrução SQL.
Se você quiser redefinir o local dos objetos DataFrame ou Series
criados, encerre a sessão executando
bigframes.pandas.close_session()
. Depois disso, você poderá reutilizar
bigframes.pandas.options.bigquery.location
para especificar outro
local.
read_gbq()
requer que você especifique um local se o conjunto de dados que você está consultando não estiver na multirregião US
. Se você tentar ler uma tabela
de outro local, será gerada uma exceção NotFound
.
Migrar para a versão 2.0 dos BigQuery DataFrames
A versão 2.0 do BigQuery DataFrames melhora a segurança e o desempenho da API BigQuery DataFrames, adiciona novos recursos e introduz mudanças importantes. Este documento descreve as mudanças e fornece orientações sobre a migração. É possível aplicar essas recomendações antes de instalar a versão 2.0 usando a versão 1.x mais recente dos BigQuery DataFrames.
O DataFrames do BigQuery versão 2.0 tem os seguintes benefícios:
- Consultas mais rápidas e menos tabelas são criadas quando você executa consultas que retornam
resultados para o cliente, porque
allow_large_results
é o padrão paraFalse
. Isso pode reduzir os custos de armazenamento, especialmente se você usa o faturamento de bytes físicos. - Melhoria na segurança padrão nas funções remotas implantadas pelo DataFrames do BigQuery.
Instalar a versão 2.0 do BigQuery DataFrames
Para evitar mudanças, fixe uma versão específica do BigQuery DataFrames no arquivo requirements.txt
(por exemplo, bigframes==1.42.0
) ou pyproject.toml
(por exemplo, dependencies = ["bigframes = 1.42.0"]
). Quando estiver tudo pronto para testar a versão mais recente, execute pip install --upgrade bigframes
para instalar a versão mais recente do BigQuery DataFrames.
Usar a opção allow_large_results
O BigQuery tem um limite máximo de tamanho de
resposta para jobs de consulta. A partir da
versão 2.0 dos DataFrames do BigQuery, eles aplicam
esse limite por padrão em métodos que retornam resultados para o cliente, como
peek()
, to_pandas()
e to_pandas_batches()
. Se o job retornar resultados
grandes, defina allow_large_results
como True
no objeto BigQueryOptions
para evitar mudanças. Essa opção é definida como False
por padrão na
versão 2.0 do BigQuery DataFrames.
import bigframes.pandas as bpd bpd.options.bigquery.allow_large_results = True
É possível substituir a opção allow_large_results
usando o
parâmetro allow_large_results
em to_pandas()
e outros métodos. Exemplo:
bf_df = bpd.read_gbq(query) # ... other operations on bf_df ... pandas_df = bf_df.to_pandas(allow_large_results=True)
Usar o decorador @remote_function
A versão 2.0 do DataFrames do BigQuery faz algumas mudanças no comportamento
padrão do decorador @remote_function
.
Os argumentos de palavra-chave são aplicados para parâmetros ambíguos
Para evitar a transmissão de valores para um parâmetro não intencional, a versão 2.0 e posteriores do BigQuery DataFrames exigem o uso de argumentos de palavra-chave para os seguintes parâmetros:
bigquery_connection
reuse
name
packages
cloud_function_service_account
cloud_function_kms_key_name
cloud_function_docker_repository
max_batching_rows
cloud_function_timeout
cloud_function_max_instances
cloud_function_vpc_connector
cloud_function_memory_mib
cloud_function_ingress_settings
Ao usar esses parâmetros, forneça o nome deles. Exemplo:
@remote_function( name="my_remote_function", ... ) def my_remote_function(parameter: int) -> str: return str(parameter)
Definir uma conta de serviço
A partir da versão 2.0, o BigQuery DataFrames não usa mais a conta de serviço do Compute Engine por padrão para as funções do Cloud Run que ele implanta. Para limitar as permissões da função implantada,
- Crie uma conta de serviço com permissões mínimas.
- Forneça o e-mail da conta de serviço ao parâmetro
cloud_function_service_account
do decorador@remote_function
.
Exemplo:
@remote_function( cloud_function_service_account="my-service-account@my-project.iam.gserviceaccount.com", ... ) def my_remote_function(parameter: int) -> str: return str(parameter)
Se você quiser usar a conta de serviço do Compute Engine, defina o parâmetro cloud_function_service_account
do decorador @remote_function
como "default"
. Exemplo:
# This usage is discouraged. Use only if you have a specific reason to use the # default Compute Engine service account. @remote_function(cloud_function_service_account="default", ...) def my_remote_function(parameter: int) -> str: return str(parameter)
Definir configurações de entrada
A partir da versão 2.0, o BigQuery DataFrames define as configurações de entrada das
funções do
Cloud Run que ele
implanta em "internal-only"
. Antes, as configurações de entrada eram definidas como
"all"
por padrão. Para mudar as configurações de entrada, defina o
parâmetro cloud_function_ingress_settings
do decorador @remote_function
.
Exemplo:
@remote_function(cloud_function_ingress_settings="internal-and-gclb", ...) def my_remote_function(parameter: int) -> str: return str(parameter)
Usar endpoints personalizados
Nas versões anteriores à 2.0 do BigQuery DataFrames, se uma região não oferecesse suporte a endpoints de serviço regional e bigframes.pandas.options.bigquery.use_regional_endpoints = True
, os DataFrames do BigQuery voltariam a usar endpoints locais. A versão 2.0 do DataFrames do BigQuery remove esse comportamento alternativo. Para se conectar a endpoints de localização na versão 2.0, defina a opção bigframes.pandas.options.bigquery.client_endpoints_override
. Exemplo:
import bigframes.pandas as bpd bpd.options.bigquery.client_endpoints_override = { "bqclient": "https://LOCATION-bigquery.googleapis.com", "bqconnectionclient": "LOCATION-bigqueryconnection.googleapis.com", "bqstoragereadclient": "LOCATION-bigquerystorage.googleapis.com", }
Substitua LOCATION pelo nome do local do BigQuery a que você quer se conectar.
Usar o módulo bigframes.ml.llm
Na versão 2.0 dos DataFrames do BigQuery, o model_name
padrão para
GeminiTextGenerator
foi atualizado para "gemini-2.0-flash-001"
. É
recomendado fornecer um model_name
diretamente para evitar problemas se o
modelo padrão mudar no futuro.
import bigframes.ml.llm model = bigframes.ml.llm.GeminiTextGenerator(model_name="gemini-2.0-flash-001")
Tipos de dados
O DataFrames do BigQuery oferece suporte aos seguintes dtypes numpy e pandas:
BigQuery | DataFrames do BigQuery e pandas |
---|---|
ARRAY |
pandas.ArrowDtype(pa.list_()) |
BOOL |
pandas.BooleanDtype() |
DATE |
pandas.ArrowDtype(pa.date32()) |
DATETIME |
pandas.ArrowDtype(pa.timestamp("us")) |
FLOAT64 |
pandas.Float64Dtype() |
GEOGRAPHY |
Suporte apenas para |
INT64 |
pandas.Int64Dtype() |
JSON |
pandas.ArrowDtype(pa.json_(pa.string()) na versão 3.0 ou mais recente do pandas e na versão 19.0 ou mais recente do pyarrow. Caso contrário, as colunas JSON são expostas como pandas.ArrowDtype(db_dtypes.JSONArrowType()) . |
STRING |
pandas.StringDtype(storage="pyarrow") |
STRUCT |
pandas.ArrowDtype(pa.struct()) |
TIME |
pandas.ArrowDtype(pa.time64("us")) |
TIMESTAMP |
pandas.ArrowDtype(pa.timestamp("us", tz="UTC")) |
O DataFrames do BigQuery não oferece suporte aos seguintes tipos de dados do BigQuery:
NUMERIC
BIGNUMERIC
INTERVAL
RANGE
Todos os outros tipos de dados do BigQuery são mostrados como o tipo de objeto.
Modo de ordenação parcial
O DataFrames do BigQuery oferece um recurso de modo de ordenação. Defina o
ordering_mode
como partial
para gerar consultas mais eficientes.
O modo de ordenação partial
contrasta com o modo strict
padrão,
que cria uma ordenação total em todas as linhas. Uma ordenação total torna
os DataFrames do BigQuery mais compatíveis com o pandas, fornecendo
acesso baseado em ordem às linhas com a propriedade DataFrame.iloc
. No entanto,
a ordenação total e o índice sequencial padrão sobre essa ordenação significam
que nem os filtros de coluna nem os de linha reduzem o número de bytes
verificados, a menos que esses filtros sejam aplicados como parâmetros às
funções read_gbq
e read_gbq_table
. Para fornecer uma ordenação total
em todas as linhas do DataFrame, o BigQuery DataFrames cria
um hash de todas as linhas. Isso pode resultar em uma verificação de dados completa que ignora os filtros de linha e coluna.
Definir a propriedade ordering_mode
como partial
impede que os DataFrames do BigQuery gerem uma ordenação total em todas as linhas. O modo de ordenação parcial também desativa recursos que exigem
uma ordenação total em todas as linhas, como a propriedade DataFrame.iloc
.
O modo de ordenação parcial define o
DefaultIndexKind
como um índice nulo, em vez de um índice sequencial sobre a ordenação.
Ao filtrar um DataFrame com ordering_mode
definido como partial
,
os DataFrames do BigQuery não precisam mais calcular quais linhas estão
ausentes no índice sequencial. Assim, ele gera consultas mais rápidas e
eficientes. A API BigQuery DataFrames ainda é
semelhante ao pandas, assim como a experiência padrão com o modo de ordenação
rígida. No entanto, o modo de ordenação parcial é diferente do comportamento
comum do pandas. Por exemplo, o modo de ordenação parcial não realiza
uniões implícitas por índice.
Com os modos de ordenação parcial e estrito, você paga pelos recursos do BigQuery que usa. No entanto, o uso do modo de ordenação parcial pode reduzir os custos ao trabalhar com tabelas agrupadas e particionadas grandes, porque os filtros de linha em colunas de cluster e de partição reduzem o número de bytes processados.
Uso
Para usar a ordenação parcial, defina ordering_mode
como partial
antes de
realizar qualquer outra operação com os DataFrames do BigQuery, conforme
mostrado no exemplo de código abaixo:
Como não há um índice sequencial com o modo de ordenação parcial,
os DataFrames do BigQuery não relacionados não são mesclados implicitamente.
Em vez disso, é necessário chamar explicitamente o método DataFrame.merge
para unir
dois DataFrames do BigQuery que derivam de diferentes expressões de tabela.
Os recursos Series.unique()
e Series.drop_duplicates()
não são
compatíveis com o modo de ordenação parcial. Em vez disso, use o método groupby
para encontrar valores exclusivos desta forma:
Com o modo de ordenação parcial, a saída das funções DataFrame.head(n)
e Series.head(n)
não é idempotente em
todas as invocações. Para fazer o download de uma amostra pequena e arbitrária dos dados, use
os métodos DataFrame.peek()
ou Series.peek()
.
Para conferir um tutorial detalhado em que você usa a propriedade ordering_mode = "partial"
, consulte este notebook do BigQuery DataFrames que demonstra o uso do modo de ordenação
parcial.
Solução de problemas
Como os DataFrames no modo de ordenação parcial nem sempre têm uma ordenação ou um índice, isso pode causar problemas comuns ao usar alguns métodos compatíveis com o Pandas.
Erro de pedido obrigatório
Alguns recursos exigem uma ordenação, como as funções DataFrame.head()
e
DataFrame.iloc
. Para conferir uma lista de recursos que exigem
ordenação, consulte a coluna Requires ordering em APIs pandas
compatíveis.
Quando não há ordenação no objeto, a operação falha com uma
mensagem OrderRequiredError
semelhante a esta:
OrderRequiredError: Op iloc requires an ordering. Use .sort_values or .sort_index to provide an ordering.
Conforme descrito na mensagem de erro, é possível fornecer uma ordenação usando o método
DataFrame.sort_values()
para classificar por uma ou mais colunas. Outras operações, como a
DataFrame.groupby()
, fornecem implicitamente uma ordenação total sobre o grupo por chaves.
Se não for possível determinar se a ordenação é totalmente estável
em todas as linhas, as operações subsequentes poderão avisar você com uma
mensagem AmbiguousWindowWarning
como esta:
AmbiguousWindowWarning: Window ordering may be ambiguous, this can cause unstable results.
Se a sua carga de trabalho puder acomodar resultados não determinísticos ou se você puder
verificar manualmente se a ordenação fornecida é total, você
poderá filtrar a mensagem AmbiguousWindowWarning
desta forma:
Erro de índice nulo
Alguns recursos exigem um índice, como as propriedades DataFrame.unstack()
e
Series.interpolate()
.Para conferir uma lista de recursos que exigem um
índice, consulte a coluna Requer índice em APIs pandas
compatíveis.
Quando você usa uma operação que exige um índice com o modo de ordenação
parcial, a operação gera uma mensagem NullIndexError
semelhante a esta:
NullIndexError: DataFrame cannot perform interpolate as it has no index. Set an index using set_index.
Conforme descrito na mensagem de erro, é possível fornecer um índice usando o método
DataFrame.set_index()
para classificar por uma ou mais colunas. Outras operações, como a
DataFrame.groupby()
, fornecem implicitamente um índice sobre o grupo por chaves, a menos que
o parâmetro as_index=False
esteja definido.
Como usar a biblioteca bigframes.pandas
A biblioteca bigframes.pandas
fornece uma API semelhante à
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. Para mais informações, consulte APIs
pandas
compatíveis.
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 usando DataFrames do BigQuery.
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 750 funções
pandas
.
Ecossistema e visualizações em Python
A API bigframes.pandas
é um gateway para o ecossistema completo de ferramentas do
Python. A API permite operações estatísticas avançadas, e é possível
visualizar as agregações geradas pelo BigQuery DataFrames.
Também é possível alternar de um DataFrame do BigQuery DataFrames para um
pandas
com operações de amostragem integradas.
Funções personalizadas do Python
Com o BigQuery DataFrames, é possível transformar as funções escalares personalizadas em funções remotas do BigQuery . Ao criar uma função remota no DataFrames do BigQuery, você cria o seguinte:
Uma conexão do BigQuery. Por padrão, uma conexão com o nome
bigframes-default-connection
é usada. Se preferir, use uma conexão pré-configurada do BigQuery. Nesse caso, a criação da conexão é ignorada.A conta de serviço da conexão padrão recebe o papel do IAM de Invocador do Cloud Run (
roles/run.invoker
).Uma função remota do BigQuery que usa a função do Cloud (1) usando a conexão do BigQuery (2).
Para conferir um exemplo, consulte Criar uma função remota.
As conexões do BigQuery são criadas no mesmo local que a sessão do DataFrames do BigQuery, usando o nome que você informou na definição da função personalizada. Para conferir e gerenciar conexões, faça o seguinte:
Acesse o BigQuery no console do Google Cloud.
Selecione o projeto em que você criou a função remota.
No painel Explorer, expanda o projeto e, em seguida, as Conexões externas.
As funções remotas do BigQuery são criadas no conjunto de dados que você especifica ou em um conjunto de dados anônimo, um tipo de conjunto de dados oculto. Se você não definir um nome para uma função remota durante a criação, o DataFrames do BigQuery vai aplicar um nome padrão que começa com o prefixo bigframes
. Para visualizar e gerenciar funções remotas criadas em um conjunto de dados especificado pelo usuário, faça o seguinte:
Acesse o BigQuery no console do Google Cloud.
Selecione o projeto em que você criou a função remota.
No painel Explorer, expanda o projeto, o conjunto de dados em que você criou a função remota e Rotinas.
Para conferir e gerenciar as funções do Cloud Run, use a página Funções e o seletor de projeto para selecionar o projeto em que você criou a função. Para identificar as funções criadas pelo
DataFrames do BigQuery, procure as funções com nomes prefixados por
bigframes
.
É possível limpar funções remotas não nomeadas do BigQuery e as funções do Cloud Run associadas da seguinte maneira:
- Para um
session
do BigQuery DataFrames, usesession.close()
. - Para a sessão padrão do BigQuery DataFrames, use
bigframes.pandas.close_session()
. - Para uma sessão anterior com
session_id
, usebigframes.pandas.clean_up_by_session_id(session_id)
.
Requisitos
Para usar as funções remotas do DataFrames do BigQuery, ative as seguintes APIs:
A API BigQuery (
bigquery.googleapis.com
)A API BigQuery Connection (
bigqueryconnection.googleapis.com
)A API Cloud Functions (
cloudfunctions.googleapis.com
)A API Cloud Run Admin (
run.googleapis.com
)A API Artifact Registry (
artifactregistry.googleapis.com
)A API Cloud Build (
cloudbuild.googleapis.com
)A API Compute Engine (
compute.googleapis.com
)A API Cloud Resource Manager (
cloudresourcemanager.googleapis.com
)Para evitar esse requisito, defina a opção
bigframes.pandas.options.bigquery.skip_bq_connection_check
comoTrue
. Nesse caso, a conexão (padrão ou pré-configurada) será usada no estado em que se encontra, sem verificar a existência da conexão ou verificar as permissões dela.
Para usar as funções remotas do DataFrames do BigQuery, você precisa receber os seguintes papéis do IAM no projeto:
Editor de dados do BigQuery (
roles/bigquery.dataEditor
)Administrador de conexão do BigQuery (
roles/bigquery.connectionAdmin
)Desenvolvedor do Cloud Functions (
roles/cloudfunctions.developer
)Usuário da conta de serviço (
roles/iam.serviceAccountUser
)Leitor de objetos do Storage (
roles/storage.objectViewer
)Administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin
) se estiver usando a conexão padrão do BigQuery ou o navegador (papéis/navegador) se estiver usando uma conexão pré-configurada. Para evitar esse requisito, defina a opçãobigframes.pandas.options.bigquery.skip_bq_connection_check
comoTrue
. Nesse caso, a conexão (padrão ou pré-configurada) seria usada no estado em que se encontra, sem qualquer existência ou verificação de permissão. Se você estiver usando a conexão pré-configurada e pulando a verificação de conexão, confirme se a conexão foi criada no local correto e se a conta de serviço tem o papel de invocador do Cloud Run (roles/run.invoker
) no projeto.
Limitações
As funções remotas levam cerca de 90 segundos para ficar disponíveis quando você as cria pela primeira vez.
Alterações triviais no notebook, como inserir uma nova célula ou renomear uma variável, podem fazer com que a função remota seja recriada, mesmo que essas mudanças não estejam relacionadas ao código da função remota.
O BigQuery DataFrames não diferencia os dados pessoais incluídos no código de função remota. O código da função remota é serializado como uma caixa opaca para implantá-lo como uma função do Cloud Run.
As funções do Cloud Run (2ª geração), as conexões do BigQuery e as funções remotas do BigQuery criadas pelos DataFrames do BigQuery persistem emGoogle Cloud. Se você não quiser manter esses recursos, exclua-os separadamente usando uma interface apropriada do Cloud Functions ou do BigQuery.
Um projeto pode ter até 1.000 funções do Cloud Run (2ª geração) por vez. Consulte todos os limites em Cotas do Cloud Run functions.
Exemplos de bigframes.pandas
Os exemplos a seguir mostram maneiras comuns de usar bigframes.pandas
.
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:
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:
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 abaixo mostra o uso de bigframes.pandas
para inspecionar a coluna body_mass_g
, calcular a média body_mass
e calcular a média body_mass
por species
:
Como usar a biblioteca bigframes.bigquery
A biblioteca bigframes.bigquery
oferece muitas funções SQL do BigQuery que podem não ter um equivalente do pandas.
Os exemplos a seguir mostram maneiras comuns de usar bigframes.bigquery
.
Criar uma série de structs
A função bigframes.bigquery.struct()
cria uma nova série de structs
com subcampos para cada coluna em um DataFrame.
Usar a função escalar SQL
Use a função bigframes.bigquery.sql_scalar()
para acessar uma sintaxe SQL arbitrária que represente uma única expressão de coluna.
Como usar a biblioteca bigframes.ml
Com os recursos de ML nos DataFrames do BigQuery, é possível pré-processar dados e treinar modelos neles. Você também pode encadear essas ações para criar pipelines de dados.
Locais ML
bigframes.ml
oferece suporte aos mesmos locais que o BigQuery ML.
A previsão do modelo do BigQuery ML e outras funções de ML são aceitas
em todas as regiões do BigQuery. O suporte para o treinamento
do modelo varia de acordo com a região. Para mais informações, consulte
Locais do BigQuery ML.
Pré-processar dados
Crie transformadores para preparar dados para uso em estimadores (modelos) usando o módulo bigframes.ml.preprocessing e o módulo bigframes.ml.compose. O DataFrames do BigQuery oferece as seguintes transformações:
Use a classe KBinsDiscretizer no módulo
bigframes.ml.preprocessing
para agrupar dados contínuos em intervalos.Use a classe LabelEncoder no módulo
bigframes.ml.preprocessing
para normalizar os rótulos de destino como valores inteiros.Use a classe MaxAbsScaler no módulo
bigframes.ml.preprocessing
para dimensionar cada recurso para o intervalo[-1, 1]
de acordo com o valor absoluto máximo.Use a classe MinMaxScaler no módulo
bigframes.ml.preprocessing
para padronizar recursos dimensionando cada recurso para o intervalo[0, 1]
.Use a classe StandardScaler no módulo
bigframes.ml.preprocessing
para padronizar recursos removendo a média e o dimensionamento para a variância da unidade.Use a classe OneHotEncoder no módulo
bigframes.ml.preprocessing
para transformar valores categóricos em formato numérico.Use a classe ColumnTransformer no módulo
bigframes.ml.compose
para aplicar transformadores a colunas do DataFrames.
Treinar modelos
Criar estimadores para treinar modelos nos DataFrames do BigQuery.
Modelos de clustering
Crie estimadores para modelos de clustering usando o módulo bigframes.ml.cluster.
- Use a classe KMeans para criar modelos de clustering K-means. Use esses modelos para segmentação de dados. Por exemplo, identificar segmentos de clientes. K-means é uma técnica de aprendizado não supervisionado, portanto, o treinamento do modelo não requer rótulos ou dados divididos para treinamento ou avaliação.
Use o módulo bigframes.ml.cluster
para criar estimadores para
modelos de agrupamento.
O exemplo de código a seguir mostra o uso da classe bigframes.ml.cluster KMeans
para criar um modelo de clusterização K-means para segmentação de dados:
Modelos de decomposição
Crie estimadores para modelos de decomposição usando o módulo bigframes.ml.decomposition.
- Use a classe PCA para criar modelos de análise de componentes principais (PCA, na sigla em inglês). Use esses modelos para calcular os componentes principais e usá-los para realizar uma mudança de base nos dados. Isso reduz a dimensionalidade, projetando cada ponto de dados apenas nos primeiros componentes principais. Assim, você consegue dados de dimensões menores, preservando o máximo possível da variação deles.
Modelos do conjunto
Crie estimadores para modelos de conjunto usando o módulo bigframes.ml.ensemble.
Use a classe RandomForestClassifier para criar modelos de classificador de floresta aleatória. Use esses modelos para construir várias árvores de decisão de método de aprendizado para classificação.
Use a classe RandomForestRegressor para criar modelos de regressão de floresta aleatória. Use esses modelos para construir várias árvores de decisão de método de aprendizado para regressão.
Use a classe XGBClassifier para criar modelos de classificador de árvore otimizados com gradiente. Use esses modelos para construir aditivamente várias árvores de decisão de método de aprendizado para classificação.
Use a classe XGBRegressor para criar modelos de regressão de árvore otimizada com gradiente. Use esses modelos para construir aditivamente várias árvores de decisão de método de aprendizado para regressão.
Modelos de previsão
Crie estimadores para modelos de previsão usando o módulo bigframes.ml.forecasting.
- Use a classe ARIMAPlus para criar modelos de previsão de série temporal.
Modelos importados
Crie estimadores para modelos importados usando o módulo bigframes.ml.imported.
Use a classe ONNXModel para importar modelos Open Neural Network Exchange (ONNX).
Use a classe TensorFlowModel para importar modelos do TensorFlow.
Use a classe XGBoostModel para importar modelos XGBoostModel.
Modelos lineares
Crie estimadores para modelos lineares usando o módulo bigframes.ml.linear_model.
Use a classe LinearRegression para criar modelos de regressão linear. Use esses modelos para previsão. Por exemplo, a previsão das vendas de um item em um determinado dia.
Use a classe LogisticRegression para criar modelos de regressão logística. Use esses modelos para a classificação de dois ou mais valores possíveis, por exemplo, se uma entrada é
low-value
,medium-value
ouhigh-value
.
O exemplo de código abaixo mostra o uso de bigframes.ml
para fazer
o seguinte:
- Carregar dados do BigQuery
- Limpar e preparar dados de treinamento
- Criar e aplicar um modelo de regressão bigframes.ml.LinearRegression
Modelos de linguagem grande
Crie estimadores para LLMs usando o módulo bigframes.ml.llm.
Use a classe GeminiTextGenerator para criar modelos geradores de texto do Gemini. Use esses modelos para tarefas de geração de texto.
Use a classe PaLM2TextGenerator para criar modelos geradores de texto do PaLM2. Use esses modelos para tarefas de geração de texto.
Use a classe PaLM2TextEmbeddingGenerator para criar modelos geradores de embedding de texto do PaLM2. Use esses modelos para tarefas de geração de embedding de texto.
Você pode usar o
Módulo bigframes.ml.llm
para criar estimadores para modelos de linguagem grandes (LLMs) remotos.
O exemplo de código abaixo mostra o uso de bigframes.ml.llm
.
Classe GeminiTextGenerator para criar um modelo do Gemini para geração de código:
Modelos remotos
Para usar modelos remotos de ML do DataFrames do BigQuery (bigframes.ml.remote ou bigframes.ml.llm), ative as seguintes APIs:
A API BigQuery (
bigquery.googleapis.com
)A API BigQuery Connection (
bigqueryconnection.googleapis.com
)A API Vertex AI (
aiplatform.googleapis.com
)A API Cloud Resource Manager (
cloudresourcemanager.googleapis.com
)Para evitar esse requisito, defina a opção
bigframes.pandas.options.bigquery.skip_bq_connection_check
comoTrue
. Nesse caso, a conexão (padrão ou pré-configurada) será usada no estado em que se encontra, sem verificar a existência da conexão ou verificar as permissões dela.
Você também precisa receber os seguintes papéis do IAM no projeto:
- Administrador de conexão do BigQuery
(
roles/bigquery.connectionAdmin
) - Administrador do IAM do projeto
(
roles/resourcemanager.projectIamAdmin
) se estiver usando a conexão padrão do BigQuery ou o navegador (papéis/navegador) se estiver usando uma conexão pré-configurada. Para evitar esse requisito, defina a opçãobigframes.pandas.options.bigquery.skip_bq_connection_check
comoTrue
. Nesse caso, a conexão (padrão ou pré-configurada) seria usada no estado em que se encontra, sem qualquer existência ou verificação de permissão. Se você estiver usando a conexão pré-configurada e pulando a verificação de conexão, confirme se a conexão foi criada no local correto e se a conta de serviço tem o papel de usuário da Vertex AI (roles/aiplatform.user
) no projeto.
A criação de um modelo remoto no DataFrames do BigQuery cria uma conexão com o BigQuery. Por padrão,
uma conexão com o nome bigframes-default-connection
é usada. Se preferir, use uma conexão pré-configurada do BigQuery.
Nesse caso, a criação da conexão é ignorada. A conta de serviço da conexão padrão recebe o papel do IAM de usuário da Vertex AI (roles/aiplatform.user
).
Criar pipelines
Crie pipelines de ML usando o módulo bigframes.ml.pipeline. Os pipelines permitem montar várias etapas de ML para validação cruzada ao definir parâmetros diferentes. Isso simplifica o código e permite implantar etapas de pré-processamento de dados e um estimador juntos.
Use a classe Pipeline para criar um pipeline de transformações com um estimador final.