Esplora e visualizza i dati in BigQuery da JupyterLab
Questa pagina mostra alcuni esempi di come esplorare e visualizzare i dati archiviato in BigQuery dall'interfaccia JupyterLab della tua istanza di blocchi note gestiti da Vertex AI Workbench.
Prima di iniziare
Se non l'hai già fatto, creazione di un'istanza di blocchi note gestiti.
Apri JupyterLab
Nella console Google Cloud, vai alla pagina Blocchi note gestiti.
Fai clic su Apri JupyterLab accanto al nome dell'istanza di blocchi note gestiti.
L'istanza di blocco note gestita apre JupyterLab.
Leggi i dati da BigQuery
Nelle due sezioni successive, leggerai i dati di BigQuery che utilizzerai per visualizzarli in seguito. Questi passaggi sono identici in Esegui query sui dati in BigQuery da in JupyterLab, quindi se hai completato puoi passare direttamente alle Visualizza un riepilogo dei dati in una tabella BigQuery.
Query sui dati con il comando magico %%bigquery
In questa sezione scriverai codice SQL direttamente nelle celle del blocco note e leggerai i dati da di BigQuery nel blocco note Python.
I comandi magici che utilizzano un carattere percentuale singolo o doppio (%
o %%
)
ti consentono di utilizzare una sintassi minima per interagire con BigQuery all'interno del
blocco note. La libreria client BigQuery per Python viene automaticamente
in un'istanza di blocchi note gestiti. Dietro le quinte, la magia di %%bigquery
utilizza la libreria client di BigQuery per Python al fine di eseguire
una data query, converti i risultati in un DataFrame pandas e, facoltativamente, salva
i risultati in una variabile, quindi mostra i risultati.
Nota: a partire dalla versione 1.26.0 del pacchetto Python google-cloud-bigquery
,
L'API BigQuery Storage
viene utilizzato per impostazione predefinita per scaricare i risultati di %%bigquery
.
Per aprire un file blocco note, seleziona File > Nuovo > Blocco note.
Nella finestra di dialogo Seleziona kernel, seleziona Python (locale), quindi fai clic su Seleziona.
Si apre il nuovo file IPYNB.
Per ottenere il numero di regioni per paese in
international_top_terms
inserisci la seguente istruzione:%%bigquery SELECT country_code, country_name, COUNT(DISTINCT region_code) AS num_regions FROM `bigquery-public-data.google_trends.international_top_terms` WHERE refresh_date = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) GROUP BY country_code, country_name ORDER BY num_regions DESC;
Fai clic su
Esegui cella.L'output è simile al seguente:
Query complete after 0.07s: 100%|██████████| 4/4 [00:00<00:00, 1440.60query/s] Downloading: 100%|██████████| 41/41 [00:02<00:00, 20.21rows/s] country_code country_name num_regions 0 TR Turkey 81 1 TH Thailand 77 2 VN Vietnam 63 3 JP Japan 47 4 RO Romania 42 5 NG Nigeria 37 6 IN India 36 7 ID Indonesia 34 8 CO Colombia 33 9 MX Mexico 32 10 BR Brazil 27 11 EG Egypt 27 12 UA Ukraine 27 13 CH Switzerland 26 14 AR Argentina 24 15 FR France 22 16 SE Sweden 21 17 HU Hungary 20 18 IT Italy 20 19 PT Portugal 20 20 NO Norway 19 21 FI Finland 18 22 NZ New Zealand 17 23 PH Philippines 17 ...
Nella cella successiva (sotto l'output della cella precedente), inserisci il comando seguente per eseguire la stessa query, ma questa volta salva i risultati un nuovo DataFrame pandas denominato
regions_by_country
. Fornisci questo nome utilizzando un argomento con il comando magico%%bigquery
.%%bigquery regions_by_country SELECT country_code, country_name, COUNT(DISTINCT region_code) AS num_regions FROM `bigquery-public-data.google_trends.international_top_terms` WHERE refresh_date = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) GROUP BY country_code, country_name ORDER BY num_regions DESC;
Nota:per ulteriori informazioni sugli argomenti disponibili per la classe
%%bigquery
, consulta la documentazione relativa alle funzionalità magiche della libreria client.Fai clic su
Esegui cella.Nella cella successiva, inserisci il seguente comando per esaminare le prime righe dei risultati della query che hai appena letto:
regions_by_country.head()
Fai clic su
Esegui cella.Il DataFrame
regions_by_country
pandas è pronto per il grafico.
Query sui dati utilizzando direttamente la libreria client di BigQuery
In questa sezione utilizzerai la libreria client di BigQuery per Python direttamente per leggere i dati nel notebook Python.
La libreria client ti offre un maggiore controllo sulle query e ti consente di utilizzare configurazioni più complesse per query e job. Integrazioni della libreria con Pandas puoi combinare la potenza del linguaggio SQL dichiarativo con di codice (Python) per aiutarti ad analizzare, visualizzare e trasformare i tuoi dati.
Nota:puoi utilizzare varie funzionalità di analisi dei dati, data wrangling e
librerie di visualizzazione, come numpy
, pandas
, matplotlib
e molte
altri. Molte di queste librerie sono basate su un oggetto DataFrame.
Nella cella successiva, inserisci il seguente codice Python per importare libreria client BigQuery per Python e inizializza un client:
from google.cloud import bigquery client = bigquery.Client()
Il client BigQuery viene utilizzato per inviare e ricevere messaggi dell'API BigQuery.
Fai clic su
Esegui cella.Nella cella successiva, inserisci il codice seguente per recuperare la percentuale di termini più frequenti del giorno negli Stati Uniti
top_terms
che si sovrappongono nel tempo per numero di giorni di distanza. L'idea è quella di cercare ai termini principali di ogni giorno e scopri in che percentuale si sovrappongono termini principali del giorno prima, 2 giorni prima, 3 giorni prima e così via (ad tutte le coppie di date nell'arco di circa un mese).sql = """ WITH TopTermsByDate AS ( SELECT DISTINCT refresh_date AS date, term FROM `bigquery-public-data.google_trends.top_terms` ), DistinctDates AS ( SELECT DISTINCT date FROM TopTermsByDate ) SELECT DATE_DIFF(Dates2.date, Date1Terms.date, DAY) AS days_apart, COUNT(DISTINCT (Dates2.date || Date1Terms.date)) AS num_date_pairs, COUNT(Date1Terms.term) AS num_date1_terms, SUM(IF(Date2Terms.term IS NOT NULL, 1, 0)) AS overlap_terms, SAFE_DIVIDE( SUM(IF(Date2Terms.term IS NOT NULL, 1, 0)), COUNT(Date1Terms.term) ) AS pct_overlap_terms FROM TopTermsByDate AS Date1Terms CROSS JOIN DistinctDates AS Dates2 LEFT JOIN TopTermsByDate AS Date2Terms ON Dates2.date = Date2Terms.date AND Date1Terms.term = Date2Terms.term WHERE Date1Terms.date <= Dates2.date GROUP BY days_apart ORDER BY days_apart; """ pct_overlap_terms_by_days_apart = client.query(sql).to_dataframe() pct_overlap_terms_by_days_apart.head()
Il codice SQL utilizzato viene incapsulato in una stringa Python e quindi passato al Metodo
query()
per eseguire una query. Il metodoto_dataframe
attende il completamento della query e scarica i risultati in un pandas tramite l'API BigQuery Storage.Fai clic su
Esegui. cella.Le prime righe dei risultati della query vengono visualizzate sotto la cella di codice.
days_apart num_date_pairs num_date1_terms overlap_terms pct_overlap_terms 0 0 32 800 800 1.000000 1 1 31 775 203 0.261935 2 2 30 750 73 0.097333 3 3 29 725 31 0.042759 4 4 28 700 23 0.032857
Per ulteriori informazioni sull'utilizzo delle librerie client di BigQuery, consulta la guida rapida Utilizzo delle librerie client.
Ottenere un riepilogo dei dati in una tabella BigQuery
In questa sezione utilizzerai una scorciatoia del notebook per ottenere statistiche di riepilogo e visualizzazioni per tutti i campi di una tabella BigQuery. Questo può essere un modo rapido per creare il profilo dei dati prima di effettuare ulteriori esplorazioni.
La libreria client di BigQuery fornisce un comando magico,
%bigquery_stats
, che puoi chiamare con il nome di una tabella specifica per fornire un
panoramica della tabella e statistiche dettagliate su ciascuna
colonne.
Nella cella successiva, inserisci il seguente codice per eseguire l'analisi negli Stati Uniti Tabella
top_terms
:%bigquery_stats bigquery-public-data.google_trends.top_terms
Fai clic su
Esegui cella.Dopo un po' di tempo di esecuzione, viene visualizzata un'immagine con varie statistiche ognuna delle sette variabili nella tabella
top_terms
. La seguente immagine mostra parte di un output di esempio:
Visualizzare i dati di BigQuery
In questa sezione, utilizzerai le funzionalità di rappresentazione grafica per visualizzare i risultati delle query eseguite in precedenza nel tuo Jupyter Notebook.
Nella cella successiva, inserisci il seguente codice per utilizzare il metodo pandas
DataFrame.plot()
per creare un grafico a barre che visualizzi i risultati della query che restituisce il numero di regioni per paese:regions_by_country.plot(kind="bar", x="country_name", y="num_regions", figsize=(15, 10))
Fai clic su
Esegui cella.Il grafico è simile al seguente:
Nella cella successiva, inserisci il seguente codice per utilizzare Pandas
DataFrame.plot()
per creare un grafico a dispersione che mostri il risultati della query per la percentuale di sovrapposizione nei termini di ricerca più cercati di giorni di distanza:pct_overlap_terms_by_days_apart.plot( kind="scatter", x="days_apart", y="pct_overlap_terms", s=len(pct_overlap_terms_by_days_apart["num_date_pairs"]) * 20, figsize=(15, 10) )
Fai clic su
Esegui cella.Il grafico è simile al seguente. Le dimensioni di ogni punto riflettono il numero di coppie di date che si trovano a molti giorni l'una dall'altra nei dati. Per Ad esempio, ci sono più coppie a distanza di 1 giorno rispetto a 30 giorni. perché i termini di ricerca più utilizzati vengono visualizzati ogni giorno nell'arco di circa un mese.
Per saperne di più sulla visualizzazione dei dati, consulta la documentazione di pandas.