Utilizza BigQuery DataFrames

BigQuery DataFrames fornisce un DataFrame Python e un'API di machine learning (ML) basate sul motore BigQuery. BigQuery DataFrames è un pacchetto open source. Puoi eseguire pip install --upgrade bigframes per installare l'ultima versione.

BigQuery DataFrames fornisce due librerie:

  • bigframes.pandas, che fornisce un'API compatibile con Pandas per l'analisi.

  • bigframes.ml, che fornisce un'API scikit-learn-like per il machine learning (ML).

Autorizzazioni obbligatorie

Opzioni

Dopo l'installazione, devi specificare location e progetto in cui vuoi utilizzare DataFrames di BigQuery. Puoi definire la posizione e il progetto nel blocco note nel seguente modo:
import bigframes.pandas as bpd

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

# Set BigQuery DataFrames options
# Note: The project option is not required in all environments.
# On BigQuery Studio, the project ID is automatically detected.
bpd.options.bigquery.project = PROJECT_ID

# Note: The location option is not required.
# It defaults to the location of the first table or query
# passed to read_gbq(). For APIs where a location can't be
# auto-detected, the location defaults to the "US" location.
bpd.options.bigquery.location = REGION

Se il criterio bf.options.bigquery.project non è impostato, $GOOGLE_CLOUD_PROJECT , che viene impostata nel runtime del blocco note che gestisce BigQuery Studio e Vertex AI Notebooks.

Località di trattamento dati

BigQuery DataFrames è progettato per la scalabilità, raggiungendo così i risultati conservando i dati e l'elaborazione nel servizio BigQuery. Tuttavia, puoi trasferire dati della tua macchina client chiamando .to_pandas() su un Oggetto DataFrame o Series. Se scegli questa opzione, i limiti di memoria si applica il tuo computer client.

Località sessione

BigQuery DataFrames utilizza un oggetto sessione locale per gestire internamente i metadati. Questo sia legata a una località. BigQuery DataFrames utilizza l'area multiregionale US come impostazione predefinita posizione, ma puoi utilizzare session_options.location per impostare una località diversa. Ogni query di una sessione viene eseguito nel luogo in cui è stata creata. DataFrame BigQuery compila automaticamente bf.options.bigquery.location con la posizione della tabella se l'utente inizia con read_gbq/read_gbq_table/read_gbq_query() e specifica una tabella, direttamente o in un'istruzione SQL.

Per reimpostare la posizione degli oggetti DataFrame o Series creati, puoi chiudere la sessione eseguendo bigframes.pandas.close_session(). In seguito, puoi riutilizzare bigframes.pandas.options.bigquery.location per specificare un'altra posizione.

read_gbq() richiede di specificare una località se il set di dati che stai utilizzando l'esecuzione delle query non si trova nella località multiregionale US. Se provi a leggere una tabella da un'altra località, riceverai un'eccezione NotFound.

Tipi di dati

BigQuery DataFrames supporta i seguenti dtype numpy e pandas:

BigQuery DataFrames e Pandas di BigQuery
ARRAY pandas.ArrowDtype(pa.list_())
BOOL pandas.BooleanDtype()
DATE pandas.ArrowDtype(pa.date32())
DATETIME pandas.ArrowDtype(pa.timestamp("us"))
FLOAT64 pandas.Float64Dtype()
GEOGRAPHY

geopandas.array.GeometryDtype()

Supportata da to_pandas() only

INT64 pandas.Int64Dtype()
STRING pandas.StringDtype(storage="pyarrow")
STRUCT pandas.ArrowDtype(pa.struct())
TIME pandas.ArrowDtype(pa.time64("us"))
TIMESTAMP pandas.ArrowDtype(pa.timestamp("us", tz="UTC"))

BigQuery DataFrames non supporta i seguenti tipi di dati BigQuery:

  • NUMERIC

  • BIGNUMERIC

  • INTERVAL

  • RANGE

  • JSON

Tutti gli altri tipi di dati BigQuery vengono visualizzati come tipo di oggetto.

Utilizzo della libreria bigframes.pandas

La libreria bigframes.pandas fornisce contenuti simili a pandas API che puoi utilizzare per analizzare e manipolare i dati in BigQuery. La L'API bigframes.pandas è scalabile per supportare l'elaborazione di terabyte di BigQuery e usa il motore di query BigQuery per eseguire i calcoli.
L'API bigframes.pandas fornisce quanto segue funzionalità:

Input e output

Puoi accedere ai dati da diverse origini, tra cui file CSV locali, File Cloud Storage, DataFrame pandas, modelli BigQuery e funzioni BigQuery e caricarlo in un DataFrame di BigQuery DataFrame. Puoi anche creare Tabelle BigQuery da BigQuery DataFrames.

Manipolazione dei dati

Per il tuo sviluppo, puoi utilizzare Python anziché SQL. Puoi sviluppare tutte manipolazioni dei dati di BigQuery in Python, eliminando la necessità di passare tra linguaggi di markup e prova ad acquisire istruzioni SQL come stringhe di testo. La L'API bigframes.pandas offre più di 750 pandas funzioni.

Ecosistema e visualizzazioni Python

L'API bigframes.pandas è un gateway per la versione completa di Python di un ecosistema di strumenti. L'API supporta operazioni statistiche avanzate e tu può visualizzare le aggregazioni generate dai DataFrames BigQuery. Puoi anche passare da un DataFrame di BigQuery a un DataFrame pandas con le operazioni di campionamento integrate.

Funzioni Python personalizzate

BigQuery DataFrames ti offre la possibilità di trasformare le tue funzioni scalari personalizzate nelle funzioni remote di BigQuery . La creazione di una funzione remota in BigQuery DataFrames crea:

  1. Una funzione Cloud Functions (2a gen.).

  2. Una connessione BigQuery. Per impostazione predefinita, viene utilizzata una connessione denominata bigframes-default-connection. Puoi utilizza una connessione BigQuery preconfigurata, se preferisci, nel qual caso la creazione della connessione viene saltata.

    All'account di servizio per la connessione predefinita viene concesso l'Invoker di Cloud Run (roles/run.invoker) ruolo IAM.

  3. Una funzione remota BigQuery che utilizza la funzione Cloud Functions (1) mediante l'API BigQuery connessione (2).

Ad esempio, vedi Creare una funzione remota.

Le connessioni BigQuery vengono create nella stessa località Sessione DataFrames di BigQuery, utilizzando il nome fornito nella funzione personalizzata definizione di Kubernetes. Per visualizzare e gestire le connessioni:

  1. Vai a BigQuery nella console Google Cloud.

  2. Seleziona il progetto in cui hai creato la funzione remota.

  3. Nel riquadro Explorer, espandi il progetto e poi Connessioni esterne.

Le funzioni remote di BigQuery vengono create nel set di dati specificato dall'utente oppure in un tipo speciale di set di dati nascosto indicato nel codice come set di dati anonimo. Per visualizzare e gestire le funzioni remote create in un set di dati fornito dall'utente, procedi nel seguente modo:

  1. Vai a BigQuery nella console Google Cloud.

  2. Seleziona il progetto in cui hai creato la funzione remota.

  3. Nel riquadro Explorer, espandi il progetto ed espandi il set di dati in cui ha creato la funzione remota, quindi espandi le routine.

Per visualizzare e gestire le funzioni di Cloud Functions, utilizza il Funzioni e usa il selettore progetti per scegliere quello in cui ha creato la funzione. Per una facile identificazione, i nomi delle funzioni I DataFrame creati da BigQuery hanno il prefisso bigframes.

Requisiti

Per utilizzare le funzioni remote di BigQuery DataFrames, devi abilitare le seguenti API:

Per utilizzare le funzioni remote di BigQuery DataFrames, devi disporre della classe seguenti ruoli IAM nel progetto:

  • Editor dati BigQuery (roles/bigquery.dataEditor)

  • Amministratore connessione BigQuery (roles/bigquery.connectionAdmin)

  • Sviluppatore Cloud Functions (roles/cloudfunctions.developer)

  • Utente account di servizio (roles/iam.serviceAccountUser)

  • Visualizzatore oggetti Storage (roles/storage.objectViewer)

  • Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin) se utilizzi il valore predefinito Connessione BigQuery o browser (roles/browser) se si utilizza una connessione preconfigurata. Questo requisito può essere evitato impostando Opzione bigframes.pandas.options.bigquery.skip_bq_connection_check per True, in questo caso la connessione (predefinita o preconfigurata) così com'è, senza che vi siano controlli di esistenza o autorizzazioni. Se utilizzi il modello preconfigurato connessione e saltando il controllo, assicurati che la connessione sia creata e il rispettivo account di servizio ha l'Invoker di Cloud Run (roles/run.invoker)ruolo su del progetto.

Limitazioni

  • Sono necessari circa 90 secondi prima che le funzioni remote diventino disponibili al momento della creazione.

  • Modifiche banali nel blocco note, ad esempio l'inserimento di una nuova cella o la ridenominazione di una variabile, potrebbero causare la nuova creazione della funzione remota, anche se le modifiche non sono correlate al codice della funzione remota.

  • BigQuery DataFrames non differenzia i dati personali che includi nel repository della funzione. Il codice della funzione remota è serializzato come una scatola opaca per eseguirne il deployment funzione Cloud Functions.

  • Le funzioni di Cloud Functions (2nd gen), le connessioni BigQuery e le funzionalità le funzioni create da BigQuery DataFrames vengono mantenute in Google Cloud. Se non vuoi per conservare queste risorse, devi eliminarle separatamente utilizzando un oggetto Cloud Functions appropriato o BigQuery.

  • Un progetto può avere fino a 1000 funzioni Cloud Functions (2nd gen) alla volta. Consulta Quote di Cloud Functions per tutti i limiti.

bigframes.pandas esempi

I seguenti esempi mostrano metodi comuni di utilizzo di bigframes.pandas.

Carica i dati da una tabella o una query BigQuery

Puoi creare un DataFrame da una tabella o una query BigQuery nel seguente modo modo:

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

Caricare i dati da un file CSV

Puoi creare un DataFrame da un file CSV locale o da Cloud Storage nella nel seguente modo:

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

Ispeziona e manipola i dati

Puoi utilizzare bigframes.pandas per eseguire l'ispezione dei dati e operazioni di calcolo.
Il seguente esempio di codice mostra l'utilizzo di bigframes.pandas per esamina la colonna body_mass_g, calcola la media body_mass e calcola la media body_mass per 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)
)

Utilizzo della libreria bigframes.ml

Le funzionalità di ML in BigQuery DataFrames consentono di pre-elaborare i dati e addestrare quindi i modelli sulla base di questi dati. Puoi anche concatenare queste azioni per creare pipeline di dati.

Località ML

bigframes.ml supporta le stesse località di BigQuery ML. La previsione del modello BigQuery ML e altre funzioni di ML sono supportate in tutti regioni BigQuery. Il supporto per l'addestramento dei modelli varia in base alla regione. Per maggiori informazioni le informazioni, vedi Località di BigQuery ML.

Pre-elabora i dati

Crea trasformatori per preparare i dati da utilizzare negli stimatori (modelli) utilizzando modulo bigframes.ml.preprocessing e il modulo bigframes.ml.compose. BigQuery DataFrames offre le seguenti trasformazioni:

  • Utilizzare la classe KBinsDiscretizer nel modulo bigframes.ml.preprocessing per eseguire il bin dei dati continui in intervalli.

  • Utilizza la classeLabelEncoder nel modulo bigframes.ml.preprocessing per normalizzare le etichette target come valori interi.

  • Utilizzare la classe MaxAbsScaler nel modulo bigframes.ml.preprocessing per scalare ciascuna caratteristica nell'intervallo [-1, 1] in base al relativo valore assoluto massimo.

  • Utilizza la classe MinMaxScaler nel modulo bigframes.ml.preprocessing per standardizzare le caratteristiche scalando ciascuna caratteristica all'intervallo [0, 1].

  • Utilizza la classe StandardScaler nel modulo bigframes.ml.preprocessing per standardizzare le caratteristiche rimuovendo la media e la scalabilità in base alla varianza dell'unità.

  • Utilizzare la classe OneHotEncoder nel modulo bigframes.ml.preprocessing per trasformare i valori categorici in formato numerico.

  • Utilizzare la classe columnTransformer nel modulo bigframes.ml.compose per applicare i transformer alle colonne DataFrame.

addestramento dei modelli

Creare stimatori per addestrare i modelli in DataFrames BigQuery.

Raggruppamento dei modelli

Crea stimatori per i modelli di clustering utilizzando il metodo modulo bigframes.ml.cluster.

  • Utilizzare la classe KMeans per creare modelli di clustering K-means. Utilizza questi modelli per la segmentazione dei dati. Ad esempio, identificare i segmenti di clienti. K-means è un di apprendimento non supervisionato, per cui l'addestramento del modello non richiede etichette o suddivisioni per l'addestramento o la valutazione.

Puoi utilizzare il modulo bigframes.ml.cluster per creare stimatori per i modelli di clustering.

Il seguente esempio di codice mostra l'utilizzo della classe bigframes.ml.cluster KMeans per Crea un modello di clustering K-means per la segmentazione dei dati:

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)

Modelli di decomposizione

Crea stimatori per i modelli di decomposizione utilizzando il modulo bigframes.ml.decomposition.

  • Utilizzare la classe PCA per creare modelli di analisi delle componenti principali (PCA). Utilizza questi per il calcolo dei componenti principali e il loro utilizzo per eseguire una modifica in base ai dati. Ciò fornisce una riduzione della dimensionalità mediante la proiezione di ogni dati puntare solo alle prime componenti principali per ottenere dei dati conservando il più possibile le variazioni dei dati.

Modelli di insieme

Crea stimatori per i modelli di insieme utilizzando il modulo bigframes.ml.ensemble.

  • Utilizzare la classe RandomForestClassifier per creare modelli casuali di classificazione delle foreste. Utilizza questi modelli per creare più strutture decisionali dei metodi di apprendimento per la classificazione.

  • Utilizzare la classe RandomForestRegressor per creare modelli casuali di regressione della foresta. Utilizza le funzionalità di per la creazione di più alberi decisionali dei metodi di apprendimento per la regressione.

  • Utilizzare la classe XGBClassifier per creare modelli di classificazione ad albero con gradiente potenziato. Usa questi modelli per creare diversi alberi decisionali dei metodi di apprendimento per la classificazione.

  • Utilizzare la classe XGBRegressor per creare modelli di regressione ad albero con gradiente amplificato. Usa questi modelli per creare più alberi decisionali dei metodi di apprendimento per la regressione.

Modelli di previsione

Utilizza il modulo bigframes.ml.forecasting per creare stimatori per i modelli di previsione.

  • Utilizzare la classe ARIMAPlus per creare modelli di previsione delle serie temporali.

Modelli importati

Crea stimatori per i modelli importati utilizzando il modulo bigframes.ml.imported.

Modelli lineari

Crea stimatori per i modelli lineari utilizzando il modulo bigframes.ml.linear_model.

  • Utilizzare la classe LinearRegression per creare modelli di regressione lineare. Utilizza questi modelli per effettuare previsioni. Ad esempio: prevedendo le vendite di un articolo in un determinato giorno.

  • Utilizzare la classe LogisticRegression per creare modelli di regressione logistica. Usa questi modelli per la classificazione di due o più valori possibili, ad esempio se un input è low-value, medium-value, o high-value.

Il seguente esempio di codice mostra l'utilizzo di bigframes.ml per eseguire seguenti:

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)

Modelli linguistici di grandi dimensioni

Crea stimatori per gli LLM utilizzando il modulo bigframes.ml.llm.

  • Utilizza la classe GeminiTextGenerator per creare modelli di generatore di testo Gemini. Utilizza questi modelli per attività di generazione di testo.

  • Utilizza la classe PaLM2TextGenerator per creare modelli di generatore di testo PaLM2. Utilizza questi modelli per attività di generazione di testo.

  • Utilizza la classe PaLM2TextEmbeddingGenerator per creare modelli di generatore di incorporamento di testo PaLM2. Utilizza questi modelli per le attività di generazione dell'incorporamento del testo.

Puoi usare bigframes.ml.llm per creare stimatori per modelli linguistici di grandi dimensioni (LLM) remoti.
Il seguente esempio di codice mostra come utilizzare bigframes.ml.llm GeminiTextGenerator per creare un modello Gemini per la generazione di codice:

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

# Create the Gemini LLM model
session = bpd.get_global_session()
connection = f"{PROJECT_ID}.{REGION}.{CONN_NAME}"
model = GeminiTextGenerator(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)

Modelli remoti

Per utilizzare i modelli remoti ML di BigQuery DataFrames (bigframes.ml.remote o bigframes.ml.llm), devi abilitare le seguenti API:

Ti devono essere concessi anche i seguenti ruoli IAM nel progetto:

  • Amministratore connessione BigQuery (roles/bigquery.connectionAdmin)
  • Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin) se utilizza il valore predefinito connessione BigQuery o browser (roles/browser) se si utilizza una connessione connessione. Questo requisito può essere evitato impostando Opzione bigframes.pandas.options.bigquery.skip_bq_connection_check per True, in questo caso la connessione (predefinita o preconfigurata) così com'è, senza che vi siano controlli di esistenza o autorizzazioni. Se utilizzi il modello preconfigurato connessione e saltando il controllo, assicurati che la connessione sia creata e il rispettivo account di servizio ha il ruolo Vertex AI User Ruolo (roles/aiplatform.user) del progetto.

La creazione di un modello remoto in BigQuery DataFrames crea una connessione BigQuery. Per impostazione predefinita, viene utilizzata una connessione denominata bigframes-default-connection. Se preferisci, puoi utilizzare una connessione BigQuery preconfigurata. In questo caso la connessione viene saltata. All'account di servizio per la connessione predefinita viene concesso Utente Vertex AI (roles/aiplatform.user) ruolo IAM.

Creazione pipeline

Creare pipeline ML utilizzando modulo bigframes.ml.pipeline. Le pipeline consentono di combinare diversi passaggi di ML da eseguire contemporaneamente con la convalida incrociata durante l'impostazione diversi parametri. Questo semplifica il codice e ti consente di eseguire il deployment della pre-elaborazione dei dati passi e uno strumento di stima.

Utilizzare la classe pipeline per creare una pipeline di trasformazioni con uno strumento di stima finale.

Passaggi successivi