在 JupyterLab 內探索 BigQuery 中的資料,並以視覺化方式呈現

本頁面提供一些範例,說明如何從 Vertex AI Workbench 代管筆記本執行個體的 JupyterLab 介面,探索及以視覺化方式呈現儲存在 BigQuery 中的資料。

事前準備

如果尚未建立代管型筆記本執行個體,請先完成這項作業。

開啟 JupyterLab

  1. 前往 Google Cloud 控制台的「Managed notebooks」頁面。

    前往代管型筆記本

  2. 按一下代管型筆記本執行個體名稱旁的「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 下載結果。

  1. 如要開啟筆記本檔案,請依序選取「File」>「New」>「Notebook」

  2. 在「Select Kernel」對話方塊中,選取「Python (Local)」,然後按一下「Select」

    系統會開啟新的 IPYNB 檔案。

  3. 如要取得資料集中各國家/地區的區域數量,請輸入下列陳述式: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;
  4. 按一下「執行儲存格」圖示

    輸出結果會與下列內容相似:

    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
    ...
    
  5. 在下一個儲存格 (前一個儲存格的輸出內容下方) 中,輸入下列指令來執行相同的查詢,但這次會將結果儲存至名為 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 指令的可用引數,請參閱用戶端程式庫魔法說明文件

  6. 按一下「執行儲存格」圖示

  7. 在下一個儲存格中輸入下列指令,查看您剛讀取的查詢結果前幾列:

    regions_by_country.head()
    
  8. 按一下「執行儲存格」圖示

    pandas DataFrame regions_by_country 已可繪製圖表。

直接使用 BigQuery 用戶端程式庫查詢資料

<

取得 BigQuery 資料表中的資料摘要

在本節中,您將使用筆記本快速鍵,取得 BigQuery 資料表所有欄位的摘要統計資料和視覺化圖表。這是在進一步探索資料前,快速建立資料剖析的實用方法。

BigQuery 用戶端程式庫提供神奇指令 %bigquery_stats,您可使用特定資料表名稱呼叫該指令,以取得資料表總覽,以及每個資料表欄的詳細統計資料。

  1. 在下一個儲存格中輸入下列程式碼,在美國top_terms資料表上執行該項分析:

    %bigquery_stats bigquery-public-data.google_trends.top_terms
    
  2. 按一下「執行儲存格」圖示

    執行一段時間後,系統會顯示圖片,其中包含 top_terms 表格中 7 個變數的各種統計資料。下圖顯示部分範例輸出內容:

    國際熱門字詞統計資料總覽。

google_trends

以圖表呈現 BigQuery 資料

在本節中,您會使用繪圖功能,以視覺化方式呈現先前在 Jupyter 筆記本中執行的查詢結果。

  1. 在下一個儲存格中輸入下列程式碼,使用 pandas DataFrame.plot() 方法建立長條圖,以視覺化方式呈現查詢結果,並依國家/地區傳回區域數量:

    regions_by_country.plot(kind="bar", x="country_name", y="num_regions", figsize=(15, 10))
    
  2. 按一下「執行儲存格」圖示

    圖表類似如下:

    國際熱門搜尋字詞國家/地區結果

  3. 在下一個儲存格中,輸入下列程式碼,使用 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)
      )
    
  4. 按一下「執行儲存格」圖示

    圖表會與下列內容相似:每個點的大小反映了資料中相隔天數的日期配對數量。舉例來說,相隔 1 天的配對數量會比相隔 30 天的配對數量多,因為熱門搜尋字詞每天都會顯示,時間大約為一個月。

    國際熱門搜尋字詞間隔天數圖表。

如要進一步瞭解資料視覺化,請參閱 pandas 說明文件