在 JupyterLab 內探索 BigQuery 中的資料,並以視覺化方式呈現
本頁面提供一些範例,說明如何從 Vertex AI Workbench 代管筆記本執行個體的 JupyterLab 介面,探索及以視覺化方式呈現儲存在 BigQuery 中的資料。
事前準備
如果尚未建立代管型筆記本執行個體,請先完成這項作業。
開啟 JupyterLab
前往 Google Cloud 控制台的「Managed notebooks」頁面。
按一下代管型筆記本執行個體名稱旁的「Open JupyterLab」(開啟 JupyterLab)。
代管型筆記本執行個體中會開啟 JupyterLab。
從 BigQuery 讀取資料
在接下來兩節中,您會從 BigQuery 讀取資料,以便稍後用於視覺化。這些步驟與「在 JupyterLab 內查詢 BigQuery 中的資料」一文中的步驟相同,因此如果您已完成這些步驟,可以跳至「取得 BigQuery 資料表中的資料摘要」。
使用 %%bigquery magic 指令查詢資料
在本節中,您會在筆記本儲存格中直接撰寫 SQL,並將資料從 BigQuery 讀取至 Python 筆記本。
使用單一或雙百分比字元 (%
或 %%
) 的神奇指令,可讓您在筆記本中使用最少的語法與 BigQuery 互動。Python 專用的 BigQuery 用戶端程式庫會自動安裝在受管理筆記本執行個體中。在幕後,%%bigquery
神奇指令會使用 Python 專用的 BigQuery 用戶端程式庫執行指定查詢、將結果轉換為 pandas DataFrame、選擇是否要將結果儲存到變數,然後顯示結果。
注意:從 google-cloud-bigquery
Python 套件 1.26.0 版開始,系統預設會使用 BigQuery Storage API,從 %%bigquery
magics 下載結果。
如要開啟筆記本檔案,請依序選取「File」>「New」>「Notebook」。
在「Select Kernel」對話方塊中,選取「Python (Local)」,然後按一下「Select」。
系統會開啟新的 IPYNB 檔案。
如要取得資料集中各國家/地區的區域數量,請輸入下列陳述式:
international_top_terms
%%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;
按一下「執行儲存格」圖示
。輸出結果會與下列內容相似:
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 ...
在下一個儲存格 (前一個儲存格的輸出內容下方) 中,輸入下列指令來執行相同的查詢,但這次會將結果儲存至名為
regions_by_country
的新 pandas DataFrame。您可以使用%%bigquery
Magic 指令的引數提供該名稱。%%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;
注意:如要進一步瞭解
%%bigquery
指令的可用引數,請參閱用戶端程式庫魔法說明文件。按一下「執行儲存格」圖示
。在下一個儲存格中輸入下列指令,查看您剛讀取的查詢結果前幾列:
regions_by_country.head()
按一下「執行儲存格」圖示
。pandas DataFrame
regions_by_country
已可繪製圖表。
直接使用 BigQuery 用戶端程式庫查詢資料
<
取得 BigQuery 資料表中的資料摘要
在本節中,您將使用筆記本快速鍵,取得 BigQuery 資料表所有欄位的摘要統計資料和視覺化圖表。這是在進一步探索資料前,快速建立資料剖析的實用方法。
BigQuery 用戶端程式庫提供神奇指令 %bigquery_stats
,您可使用特定資料表名稱呼叫該指令,以取得資料表總覽,以及每個資料表欄的詳細統計資料。
在下一個儲存格中輸入下列程式碼,在美國
top_terms
資料表上執行該項分析:%bigquery_stats bigquery-public-data.google_trends.top_terms
按一下「執行儲存格」圖示
。執行一段時間後,系統會顯示圖片,其中包含
top_terms
表格中 7 個變數的各種統計資料。下圖顯示部分範例輸出內容:
google_trends
以圖表呈現 BigQuery 資料
在本節中,您會使用繪圖功能,以視覺化方式呈現先前在 Jupyter 筆記本中執行的查詢結果。
在下一個儲存格中輸入下列程式碼,使用 pandas
DataFrame.plot()
方法建立長條圖,以視覺化方式呈現查詢結果,並依國家/地區傳回區域數量:regions_by_country.plot(kind="bar", x="country_name", y="num_regions", figsize=(15, 10))
按一下「執行儲存格」圖示
。圖表類似如下:
在下一個儲存格中,輸入下列程式碼,使用 pandas
DataFrame.plot()
方法建立散佈圖,以視覺化方式呈現查詢結果,瞭解熱門搜尋字詞的重疊百分比 (以間隔天數為準):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) )
按一下「執行儲存格」圖示
。圖表會與下列內容相似:每個點的大小反映了資料中相隔天數的日期配對數量。舉例來說,相隔 1 天的配對數量會比相隔 30 天的配對數量多,因為熱門搜尋字詞每天都會顯示,時間大約為一個月。
如要進一步瞭解資料視覺化,請參閱 pandas 說明文件。