Granularidade com Pandas e análise de dados

Leandro Cruvinel
4 min readAug 12, 2019

--

Granularidade são subdivisões de uma variável tornando-a menos ou mais detalhada. Quando mais, o processo é chamado de Drill Down, quando menos de Roll Up. Por exemplo, considerando a variável tempo, um relatório diário é mais detalhado que um relatório mensal. O tempo em mês tem maior granularidade que em dia. Logo, quando passamos de mês para dia, estamos fazendo um Drill Down. Quando o contrário, ou seja, passamos de dia para mês, estamos fazendo um Roll Up.

Diferentes granularidades fornecem diferentes visualizações e, consequentemente, diferentes insights. Por exemplo, ao analisarmos a concentração média de Dióxido de oxigênio no ar, de março de 2004 a fevereiro de 2005, por dia, mês, bimestre e semestre, há uma grande diferença no gráficos:

Air quality dataset. S. De Vito et. al; 2008

Enquanto que por dia o excesso de informações deixa o gráfico praticamente ilegível, por semestre não é possível observar que houve uma alta na concentração média de dióxido de nitrogênio em Julho de 2004.

Além disso, a escolha da média como estatística de agregação foi outro fator, aqui, escolhido aleatoriamente. Poderíamos ter escolhido mínima, máxima, mediana ou moda. O gráfico a seguir apresenta os mesmos dados considerando a máxima:

Air quality dataset. S. De Vito et. al; 2008

A escolha da granularidade, bem como da função de agregação, vai depender do objetivo do usuário. Neste post aprenderemos como fazer os gráficos como os acima usando a biblioteca Pandas do Python!

O código completo pode ser encontrado aqui!

Preparação do ambiente

Para este projeto usaremos Jupyter Notebook. Ele já vem instalado no Anaconda. Você pode fazer o download do Anaconda clicando aqui!

Após instalação, procure por Jupyter Notebook no seu computador. Clicando no ícone, seu navegador de internet se abrirá com o programa que utilizaremos. Daí é só clicar em New e, depois, em Python 3.

Seu notebook é salvo automaticamente em alguma pasta no seu computador. Para usuários Windows, o caminho é C:/Usuários/Seu_Nome

Precisaremos do conjunto de dados Air Quality. Você pode fazer o download do arquivo clicando aqui !

Salve o arquivo na mesma pasta em que o notebook está salvo.

Estamos prontos para começar!

Bibliotecas

Precisaremos importar algumas bibliotecas. No Anaconda, não é preciso instalá-las, basta apenas importá-las usando os códigos a seguir:

Carregando os dados

Nesse passo é importante que o arquivo .csv esteja na mesma pasta que está o notebook.

A linha 5 carrega o conjunto de dados na variável df. Essa variável é do tipo DataFrame.

A linha 8 do código acima converte as entradas da coluna Date para datetime. Essa conversão é necessária para explorar as granularidades.

Escolha da variável de interesse

Agora devemos escolher qual variável exploraremos. Para ver todas as variáveis do Dataframe, executamos o código a seguir:

Para este trabalho escolheremos ‘NO2(GT)’.

Criando o gráfico

O comando a seguir cria o gráfico da concentração máxima de dióxido de nitrogênio em relação ao tempo. A granularidade escolhida para a variável Date foi mês. No código essa granularidade é representada por 1M, indicando 1 mês.

O resultado é o seguinte:

Podemos trocar a agregação substituindo max por outra funções de agregação. A tabela abaixo apresenta algumas opções:

Roll up

Aumentaremos a granularidade mensal para trimestral:

Para isto, observamos que basta trocar ‘1M’ por ‘3M’. A tabela a seguir apresenta outras granularidades de tempo:

Drill down

Agora que sabemos as fórmulas para algumas granularidades, hora de fazer um Drill down e trabalhar com a variável Date em quinzenas:

Considerações finais

Aprendemos:

  • O que é granularidade
  • Quais são granularidades para variáveis de tempo, por exemplo, datas
  • O que é roll up
  • O que é drill down
  • O que são funções de agregação
  • Como fazer tudo isso com Python e Pandas

Além disso, vimos vários exemplos de granularidades de datas e de funções de agregação.

Desafio

Agora é com você!

Tente aplicar alguns dos conceitos vistos aqui em outro conjunto de dados. Por exemplo, Online Retail.

Estes conhecimentos são muito importantes para extrair informação relevante de conjuntos de dados e criar um suporte às tomadas de decisão.

Até a próxima!

--

--

Leandro Cruvinel
Leandro Cruvinel

Written by Leandro Cruvinel

Math Professor | Data Scientist | Web developer

No responses yet