Como visualizar dados do BigQuery em um notebook do Jupyter

O BigQuery é um serviço de armazenamento de dados para análise em escala de petabyte. Ele é usado para executar consultas SQL em um grande volume de dados, praticamente em tempo real.

As ferramentas de visualização de dados podem ajudar a compreender e a analisar os dados do BigQuery de maneira interativa. Use essas ferramentas para identificar tendências, responder a elas e fazer previsões usando seus dados. Neste tutorial, você usará a biblioteca de cliente em Python no BigQuery e o Pandas em um bloco de notas do Jupyter para visualizar dados na tabela de amostra de natalidade do BigQuery.

Objetivos

Neste tutorial, você aprenderá como:

  • configurar um ambiente para executar os notebooks do Jupyter;
  • consultar e visualizar dados do BigQuery usando o Pandas e a biblioteca de cliente em Python do BigQuery.

Custos

É necessário pagar para usar o BigQuery. Você tem 1 TB por mês grátis para fazer consultas no BigQuery. Para mais informações, consulte a página Preços do BigQuery.

Antes de começar

Antes de começar este tutorial, use o Console do Google Cloud Platform para criar ou selecionar um projeto e ativar o faturamento.

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. Selecione ou crie um projeto do GCP.

    Acessar a página Gerenciar recursos

  3. Verifique se o faturamento foi ativado para o projeto.

    Saiba como ativar o faturamento

  4. O BigQuery é ativado automaticamente em novos projetos. Para ativar o BigQuery em um projeto existente, Ativar BigQuery API.

    Ativar a API

Como configurar um ambiente Jupyter local

Neste tutorial, você usará um bloco de notas do Jupyter hospedado localmente. Conclua as etapas a seguir para instalar o Jupyter, configurar a autenticação e instalar as bibliotecas necessárias do Python.

  1. Execute o seguinte comando no seu terminal para instalar a versão mais recente da biblioteca de cliente em Python do BigQuery, incluindo a biblioteca Pandas, necessária para funções que usam o Pandas:

    pip install --upgrade google-cloud-bigquery[pandas]
    
  2. Siga as instruções de instalação na Documentação do Jupyter para instalar o Jupyter.

  3. Siga as instruções na página Primeiros passos na autenticação para configurar o Application Default Credentials. Para configurar a autenticação, é necessário criar uma conta de serviço e definir uma variável de ambiente.

Visão geral do Blocos de notas do Jupyter

Um bloco de notas oferece um ambiente para criar e executar códigos. Ele é basicamente um artefato de origem salvo como um arquivo .ipynb, possui conteúdo de texto descritivo, blocos de códigos executáveis e resultados associados, renderizados como HTML interativo. Estruturalmente, um bloco de notas é uma sequência de células.

Uma célula é um bloco de texto de entrada que é avaliado para produzir resultados. Há dois tipos:

  • Células de código: contêm códigos a serem avaliados. Todas as saídas ou resultados da execução do código são renderizados imediatamente abaixo do código de entrada.

  • Células Markdown: contêm texto Markdown convertido em HTML para produzir cabeçalhos, listas e texto formatado.

A imagem abaixo mostra uma célula Markdown seguida de uma célula de código do Python. A saída da célula do Python é mostrada imediatamente abaixo do código.

Células de código e em marcação do Jupyter

Cada bloco de notas aberto está associado a uma sessão em execução. No IPython, essa sessão também é chamada de kernel. Nela, todo o código inserido no bloco de notas é executado e o estado é gerenciado, o que inclui as variáveis e os valores delas, as funções e classes e todos os módulos carregados existentes no Python.

Como consultar e visualizar dados do BigQuery

Nesta seção do tutorial, crie um bloco de notas do Cloud Datalab para consultar e visualizar dados no BigQuery. Você cria visualizações usando os dados na tabela de amostras de natalidade. Todas as consultas neste tutorial estão na sintaxe SQL padrão.

Para consultar e visualizar dados do BigQuery usando um bloco de notas do Jupyter:

  1. Se você ainda não iniciou o Jupyter, execute o seguinte comando no seu terminal:

    jupyter notebook
    
  2. O Jupyter deverá estar em execução e aberto em uma janela do navegador. Na janela do Jupyter, clique no botão Novo e selecione Python 2 ou Python 3 para criar um novo bloco de notas do Python.

    Novo bloco de notas do Jupyter em Python 3

  3. Na parte superior da página, clique em Sem título.

  4. Na caixa de diálogo Rename notebook, digite um novo nome, como BigQuery tutorial, e clique em Rename.

  5. A biblioteca de cliente em Python do BigQuery fornece um comando mágico que permite executar consultas com o mínimo de codificação. Para carregar os comandos mágicos da biblioteca de cliente, cole o seguinte código na primeira célula do notebook.

    %load_ext google.cloud.bigquery
  6. Para executar o comando, clique no botão Run ou use o atalho SHIFT + ENTER.

  7. A biblioteca de cliente do BigQuery fornece um comando de mágica de célula, %%bigquery, que executa uma consulta SQL e retorna os resultados como um DataFrame do Pandas. Digite o seguinte comando na próxima célula para retornar o total de nascimentos por ano.

    %%bigquery
    SELECT
        source_year AS year,
        COUNT(is_male) AS birth_count
    FROM `bigquery-public-data.samples.natality`
    GROUP BY year
    ORDER BY year DESC
    LIMIT 15
  8. Clique em Run.

  9. Os resultados da consulta são exibidos abaixo da célula de código.

    Tabela de nascimentos por ano

  10. No próximo bloco de célula, digite o seguinte comando para executar a mesma consulta, mas desta vez salve os resultados em uma nova variável total_births, que é fornecida como um argumento para o comando %%bigquery. Os resultados poderão ser usados para análise e visualização.

    %%bigquery total_births
    SELECT
        source_year AS year,
        COUNT(is_male) AS birth_count
    FROM `bigquery-public-data.samples.natality`
    GROUP BY year
    ORDER BY year DESC
    LIMIT 15
  11. Clique em Run.

  12. Agora você tem um DataFrame do Pandas salvo na variável total_births, que está pronto para ser plotado. Para se preparar para plotar os resultados da consulta, cole o seguinte comando mágico integrado na próxima célula para ativar o matplotlib, que é a biblioteca usada pelo Pandas para plotagem.

    %matplotlib inline
  13. Clique em Run.

  14. Na próxima célula, insira o código a seguir para usar o método DataFrame.plot() do Pandas para visualizar os resultados da consulta como um gráfico de barras. Veja a documentação do Pandas para saber mais sobre visualização de dados com o Pandas.

    total_births.plot(kind='bar', x='year', y='birth_count');
  15. Clique em Run.

  16. O gráfico aparece abaixo do bloco de código.

    Gráfico de barras dos nascimentos por ano

  17. Depois, cole a consulta a seguir na próxima célula para recuperar o número de nascimentos por dia da semana.

    %%bigquery births_by_weekday
    SELECT
        wday,
        SUM(CASE WHEN is_male THEN 1 ELSE 0 END) AS male_births,
        SUM(CASE WHEN is_male THEN 0 ELSE 1 END) AS female_births
    FROM `bigquery-public-data.samples.natality`
    WHERE wday IS NOT NULL
    GROUP BY wday
    ORDER BY wday ASC

    O campo wday (dia da semana) permite valores nulos. Dessa forma, a consulta exclui registros em que wday é nulo.

  18. Clique em Run.

  19. Na próxima célula, informe o código a seguir para visualizar os resultados da consulta usando um gráfico de linhas.

    births_by_weekday.plot(x='wday');
  20. Clique em Run.

  21. O gráfico aparece abaixo do bloco de código. Observe que o número de nascimentos diminui drasticamente no domingo (1) e no sábado (7).

    Gráfico de linhas de nascimentos por semana

  22. Clique em Arquivo> Salvar e criar checkpoint ou clique no ícone de salvamento na barra de ferramentas. Com a criação de um checkpoint, o bloco de notas retorna a um estado anterior.

Pandas DataFrames

Com os comandos mágicos, você pode usar uma sintaxe mínima para interagir com o BigQuery. Nos bastidores, o comando %%bigquery usa a biblioteca de cliente em Python do BigQuery para executar a consulta em questão, converter os resultados em um Dataframe do Pandas, salvá-los em uma variável e exibi-los. Usar a biblioteca de cliente em Python do BigQuery diretamente, em vez de usar comandos mágicos, oferece mais controle sobre suas consultas e permite configurações mais complexas. As integrações da biblioteca com o Pandas permitem combinar o poder do SQL declarativo com o código imperativo (Python) para realizar tarefas interessantes de análise, visualização e transformação de dados.

Como consultar e visualizar dados do BigQuery usando DataFrames do Pandas

Nesta seção do tutorial, você consultará e visualizará dados no BigQuery usando DataFrames do Pandas. Use a biblioteca de cliente em Python do BigQuery para consultar dados do BigQuery. Você também usará a biblioteca em Python do pandas para analisar dados com o DataFrames.

  1. Digite o seguinte código do Python na próxima célula para importar a biblioteca de cliente em Python do BigQuery e inicializar um cliente. O cliente do BigQuery é usado para enviar e receber mensagens da API BigQuery.

    from google.cloud import bigquery
    client = bigquery.Client()
  2. Clique em Run.

  3. Use o método Client.query () para executar uma consulta. Na próxima célula, insira o seguinte código para executar uma consulta que recupera a contagem anual de nascimentos plurais por quantidade (2 para gêmeos, 3 para trigêmeos etc.).

    sql = """
    SELECT
        plurality,
        COUNT(1) AS count,
        year
    FROM
        `bigquery-public-data.samples.natality`
    WHERE
        NOT IS_NAN(plurality) AND plurality > 1
    GROUP BY
        plurality, year
    ORDER BY
        count DESC
    """
    df = client.query(sql).to_dataframe()
    df.head()
  4. Clique em Run.

  5. Para gerar um gráfico dos resultados da consulta em seu DataFrame, insira o seguinte código na próxima célula para reduzir os dados e criar um gráfico de barras empilhadas da contagem de nascimentos plurais ao longo do tempo.

    pivot_table = df.pivot(index='year', columns='plurality', values='count')
    pivot_table.plot(kind='bar', stacked=True, figsize=(15, 7));
  6. Clique em Run.

  7. O gráfico aparece abaixo do bloco de código.

    Pluralidade de nascimento por ano gráfico de barras empilhadas

  8. Na próxima célula, digite a consulta a seguir para recuperar o número de partos pelo número de semanas de gestação.

    sql = """
    SELECT
        gestation_weeks,
        COUNT(1) AS count
    FROM
        `bigquery-public-data.samples.natality`
    WHERE
        NOT IS_NAN(gestation_weeks) AND gestation_weeks <> 99
    GROUP BY
        gestation_weeks
    ORDER BY
        gestation_weeks
    """
    df = client.query(sql).to_dataframe()
  9. Clique em Run.

  10. Para gerar um gráfico dos resultados de consulta no DataFrame, cole o código a seguir na próxima célula.

    ax = df.plot(kind='bar', x='gestation_weeks', y='count', figsize=(15,7))
    ax.set_title('Count of Births by Gestation Weeks')
    ax.set_xlabel('Gestation Weeks')
    ax.set_ylabel('Count');
  11. Clique em Run.

  12. O gráfico de barras aparece abaixo do bloco de código.

    Gráfico de peso médio por semana de gestação

A seguir

  • Saiba mais sobre como escrever consultas no BigQuery. O tópico Como consultar dados na documentação do BigQuery explica como fazer consultas, criar funções definidas pelo usuário (UDFs, na sigla em inglês) e muito mais.

  • Explore a sintaxe do BigQuery. O dialeto preferido para consultas SQL no BigQuery é o SQL padrão, descrito na Referência do SQL. A sintaxe semelhante ao SQL legado do BigQuery é descrita na Referência de consulta (SQL legado).

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…