Data Visualization: conhecendo as bibliotecas do Python

Data Visualization: conhecendo as bibliotecas do Python

A Ciência de Dados é o conjunto de técnicas que trabalha em analisar e interpretar informações úteis e valiosas por trás de grandes volumes de dados que são gerados todos os dias, nos mais diferentes setores. Nesse contexto, surge também a visualização de dados que desempenha um papel importante quando precisamos identificar problemas, anomalias e tendências no processo de análise de dados. Logo, é uma ferramenta essencial para profissionais de dados e para o público em geral que consome essas informações.

Para resolver essas tarefas, surgem bibliotecas com o papel de unir a visualização de dados ao poder do Python e suas bibliotecas para Data Science, como NumPy e Pandas, que já atuam em toda a cadeia do trabalho de extração, limpeza e transformação de dados.

Nesse artigo, vamos conhecer um pouco mais sobre a visualização de dados e algumas bibliotecas muito utilizadas.

O que é Visualização de Dados (DataViz)?

A visualização de dados, também conhecida por termos como data visualization ou DataViz, é o conjunto de técnicas para representar informações e dados de forma visual de maneira compreensível a fim transmitir resultados de análise de dados. Essas técnicas são utilizadas para transformar grandes conjuntos de dados e registros em gráficos, tabelas e diagramas que podem ser processados mais facilmente e por qualquer pessoa.

Por exemplo, utilizando um conjunto de dados (dataset) como o Iris, que possui 150 registros com o comprimento (length) de sépalas e pétalas de algumas espécies de flores Iris (a saber, virginica, versicolor e setosa), nós podemos apresentar as informações contidas nesse conjunto de algumas maneiras. Neste caso, podemos expor a tabela de dados diretamente:

sepal length (cm)petal length (cm)class
05.11.4setosa
14.91.4setosa
24.71.3setosa
34.61.5setosa
45.01.4setosa
...........
1456.75.2virginica
1466.35.0virginica
1476.55.2virginica
1486.25.4virginica
1495.95.1virginica

Ou através do uso de gráficos, resumindo as informações desse conjunto de dados de maneira visual. O exemplo abaixo é um gráfico de dispersão (scatter) que traz os mesmos registros da tabela completa anterior:

alt text: Gráfico de dispersão com o título “Dataset Iris”. O gráfico contém três grupos, uma para cada espécie da planta íris, sendo elas: setosa, virginica e versicolor, representadas no gráfico e na legenda pelas cores vermelho, azul e verde, respectivamente. Os pontos vermelhos se concentram no canto superior direito do gráfico, os pontos verdes ao centro e os pontos azuis no canto inferior esquerdo. Os limites do gráfico no eixo X, chamado de “sepal length (cm)” vão de 4 a 8.0, e os limites no eixo Y, chamado “petal length (cm)” vão de 1 a 7.

Dessa maneira, nós conseguimos gerar insights de forma mais rápida e com uma linguagem simples. Para analisar o gráfico acima, não é preciso muito conhecimento técnico para compreender as características individuais de cada espécie de Iris, os tamanhos mínimos e máximos ou qual espécie tem pétala ou sépala maior, por exemplo. Isso facilita o processo de observar e comunicar resultados em análise de dados.

Na Ciência de Dados, a visualização de dados tem o papel fundamental de conectar os setores de cada área do negócio. Os projetos são executados por pessoas analistas e cientistas de dados e passam por uma fase na qual a apresentação dos resultados é estruturada.

Nesse ponto, cria-se um storytelling (uma maneira de apresentar informação ao público alvo) e para dar suporte a esse processo criativo e analítico, os dados agora transformam-se em resultados por meio de indicadores ou KPIs, insights, números, gráficos, diagramas, entre outros.

Terminologias

O inglês é a língua utilizada para estruturar os códigos em Python e de suas bibliotecas. Então, é importante conhecer alguns dos termos utilizados em tarefas de visualização de dados, tais como:

Termo [em inglês]TraduçãoObservações
ChartGráficoGeralmente é acompanhado do tipo do gráfico.
Ex: Pie Chart (Pizza), Bar Chart (Barras), Line Chart (Linhas), Bubble Chart (Bolhas), etc.
PlotPlotagemProdução de uma imagem por meio de desenhos e linhas. Ação de construir o gráfico.
Axis / AxesEixoEixo dos gráficos.
Ideia análoga à Matemática, na qual temos X e Y para o caso 2D e X, Y, Z para o caso 3D.
LabelRótuloSão os rótulos que dão o nome e acompanham cada eixo.
Geralmente aparecem acompanhados do respectivo eixo. Ex: x_label, y_label, etc.
GridGrade/MalhaÉ a estrutura de fundo de um gráfico.
Linhas horizontais e verticais espaçadas que servem de referência para as unidades dos eixos.
LegendLegendaCaixa de texto descritivo, contendo informações sobre os elementos do gráfico.
Geralmente traz informação sobre o que significa determinada cor ou traçado e/ou quais as variáveis sendo plotadas.

Esses termos também podem ser vistos por meio da imagem abaixo que mostra a estrutura “anatômica” de um gráfico, ou seja, como os elementos são chamados. Mesmo em bibliotecas diferentes, ainda conseguimos observar várias semelhanças.

alt text: Estrutura com elementos de um gráfico construído no Matplotlib. Existem duas curvas plotadas em um plano cartesiano, com eixos X e Y, rotulados como “x Axis” e “y Axis”, respectivamente. As curvas são posicionadas no centro da imagem: uma curva na cor azul, na parte superior, rotulada como Line (plt.plot); e outra laranja, na parte inferior. O título do gráfico é “Anatomia de uma figura” e é rotulado como Title (plt.title). O título do eixo X é “x Axis label”, com limites de 0 a 4 e está rotulado como xlabel (plt.xlabel). O título do eixo Y é “y Axis label”, com limites de 0 a 4 e está rotulado como ylabel (plt.ylabel). Entre as duas curvas, existem vários quadrados na cor roxa rotulados como Markers (plt.scatter). No canto superior direito do gráfico temos uma legenda com dois elementos: uma linha em azul com o rótulo “Blue signal” e outra linha em laranja com rótulo “Orange signal”. A legenda é rotulada como legend (plt.legend). O gráfico está contido em um retângulo. No canto superior direito desse retângulo temos o rótulo Figure (plt.figure).

Agora que já conhecemos os principais termos e componentes dos gráficos e figuras, vamos partir para as bibliotecas.

Banner promocional da Alura, com um design futurista em tons de verde, apresentando o texto

Matplotlib

alt text: Logotipo da biblioteca Matplotlib na cor azul e com um ícone no lugar da letra O. Esse ícone é um círculo que contém a representação de um gráfico com sete triângulos concêntricos em cores diferentes.

A Matplotlib é uma das bibliotecas mais populares para visualização de dados em Python. Criada em 2003, pelo cientista da computação John D. Hunter, o projeto Matplotlib foi desenvolvido com o objetivo de promover um ambiente de criação de gráficos (plots) semelhantes ao do software MATLAB.

O projeto é de código aberto (open source) e possui uma variedade de gráficos, como: o de linhas, dispersão, histogramas, barras, e muito mais. Ele também permite um alto nível de personalização, desde o trabalho com as cores de cada elemento, fontes, escalas, entre outros. Para os gráficos em imagens, é possível trabalhar com vários tipos de saída, desde os mais comuns PNG, PDF, JPEG, SVG e EPS, sendo este último um formato bastante utilizado para artigos acadêmicos e técnicos.

Galeria de gráficos da Matplotlib

A documentação do Matplotlib disponibiliza dois links interessantes: o Plot Types e o Examples.

  • Plot types: página dedicada a mostrar os tipos de visualizações possíveis com Matplotlib. Alguns deles são: plot, scatter, bar, stem, step e fill_between.
alt text: Captura de tela de um recorte da página Plot types da documentação do Matplotlib. O título principal é “Basic”, e o subtítulo é “Basic plot types, usually y versus x”. Temos 6 quadros com exemplos de tipos diferentes de gráficos. Esses quadros são dispostos em 2 linhas e 3 colunas, sendo na primeira linha, da esquerda para direita: “plot(x, y)”, “scatter(x, y)”, “bar(x, height)”. Na segunda linha temos, da esquerda para a direita:, “stem(x, y)”, “step(x, y)” e “fill_between(x, y1, y2)”.
  • Examples: página com exemplos diversos e junção de funções de criação e customização diferentes do matplotlib. Alguns dos exemplos mostrados são: Bar color demo, Bar Label Demo, Stacked bar chart, Grouped bar chart with labels, Horizontal bar chart e Broken Barh.
alt text: Captura de tela de um recorte da página Examples da documentação do Matplotlib. O título principal é “Line, bars and markers”. Temos 6 quadros com exemplos de gráficos de barras dispostos em 2 linhas e 3 colunas. Os quadros na primeira linha, da esquerda para a direita, são chamados de “Bar color demo”, “Bar Label Demo” e “Stacked bar chart”. Os quadros na segunda linha, da esquerda para a direita são chamados de “Grouped bar chart with labels”, “Horizontal bar chart” e “Broken Barh”.

Além da grande variedade de gráficos 2D estáticos, a Matplotlib também permite a criação de animações no formato GIF, gráficos em 3D e a junção de vários gráficos em um só (subplots). Tudo isso com o uso de módulos específicos dentro da biblioteca.

Seaborn

alt text: Logotipo da biblioteca Seaborn em diferentes tonalidades de azul. Do lado esquerdo temos o ícone com alguns tipos de gráficos dentro de um círculo. Ao lado direito do ícone temos a palavra “seaborn”.

Em 2012, sob orientação do cientista de dados americano Michael Waskom, surge a Seaborn, uma biblioteca de código aberto baseada no Matplotlib. Ela propõe uma interface de alto nível para trabalhar com gráficos mais atrativos e com informações estatísticas, com a ideia principal que, segundo Waskom, “a Seaborn torna coisas difíceis em coisas muito fáceis de serem feitas”.

A biblioteca é geralmente utilizada em conjunto com outras bibliotecas de análise de dados, das quais tem uma ótima aderência entre os seus objetos, como NumPy e Pandas, nos quais é possível indicar de maneira simples as variáveis que estão sendo utilizadas e gerar rapidamente resultados.

Galeria de gráficos da Seaborn

A Seaborn também possui uma galeria de imagens dos gráficos feitos utilizando a biblioteca.

alt text: Captura de tela de um recorte da página Examples da documentação da Seaborn com o título “Example gallery”. Temos 21 quadros com exemplos diversos de gráficos e que estão dispostos em 3 linhas e 7 colunas.

E uma das características mais importantes da Seaborn é a facilidade em tratar informações estatísticas do conjunto de dados durante o processo de plot dos gráficos. No exemplo abaixo construímos um gráfico de histograma e, apenas adicionando o parâmetro kde=True, conseguimos criar uma nova linha no gráfico que faz uma estimativa de uma função estatística para esse mesmo conjunto de dados.

import seaborn as sns
sns.histplot(data=df, x='sepal length (cm)', kde=True)
plt.show()
alt text: Gráfico de Histograma colorido em azul e fundo em cinza. Nele temos os eixos X e Y. O eixo X é chamado “sepal length (cm)” e a escala vai de 4.5 até 8.0 (espaçadas de 0.5 em 0.5). Já o eixo Y é chamado “Count” com escala de 0 a 25 (espaçados de 5 em 5). Temos 9 barras de tamanhos diferentes, com os seguintes valores aproximados para as alturas das barras: 9, 23, 20, 26, 26, 14, 16, 5, 6.

Plotly

alt text: Logotipo da biblioteca Plotly nas cores azul marinho, e diferentes tons de rosa e azul. No lado esquerdo temos o ícone do logotipo da plotly e a palavra “plotly” escrito à direita do ícone.

A Plotly é uma biblioteca de código aberto para visualização de dados de forma interativa em Python e que possui suporte em outras linguagens de programação. Criada em 2012 pelos cientistas de dados Alex Johnson, Jack Parmer e Chris Parmer, a Plotly chegou ao cenário com o objetivo de preencher a lacuna na visualização de dados interativa.

A principal característica da Plotly é a capacidade de criar gráficos que podem ser manipulados em tempo real pelas pessoas usuárias, permitindo que a exploração dos dados seja dinâmica e imersiva. Na interface do gráfico, é possível usar ações como diminuir e aumentar o zoom, mudar a região de observação (pan), utilizar filtros de dados e também animações.

A Plotly funciona muito bem com várias plataformas usadas em Ciência de Dados e desenvolvimento de softwares, tais como: Jupyter Notebook, Dash (framework de dashboards web), aplicativos webs, Streamlit e possui a possibilidade de exportação de HTML para páginas web.

Na Plotly, o gráfico de dispersão, mostrado no início do artigo, torna-se interativo e permite explorar várias ações.

alt text: Gif de um gráfico de dispersão utilizando a biblioteca Plotly. São mostradas as funcionalidades das ferramentas de Pan e Zoom, localizadas no canto superior esquerdo. E também são exibidos pop-ups quando o mouse passa sobre um dos pontos do gráfico no qual aparece uma janela com informações de cores e os respectivos valores para os eixos X e Y.

Galeria de gráficos da Plotly

A galeria de gráficos da Plotly está disponível na página Plotly Open Source Graphing Library for Python e conta com diversos exemplos de gráficos básicos, estatísticos, mapas e vários exemplos aplicados.

alt text: Captura de tela com um recorte dos exemplos da página “Gallery” da documentação do matplotlib. São mostrados 15 gráficos ao todo, divididos em três seções com 5 gráficos cada. A primeira sessão chama-se “Fundamentals”, a segunda “Basic Charts” e a terceira “Statistical Charts”.

O que vem depois?

O trabalho com visualização de dados e criação de gráficos e figuras não para por aqui. Também podemos incorporar esses itens em relatórios estáticos (documentos, PDFs, etc.) ou em relatórios dinâmicos, como os relatórios e dashboards criados em Power BI. Além disso, podemos utilizar esses itens em páginas web, complementando tecnologias como o Flask, Django e as tecnologias para webapps voltadas a dados já mencionadas, como o Dash e Streamlit.

Conclusão

E aí, curtiu? Aqui na Alura nós temos vários conteúdos voltados à Ciência de Dados e Visualização de Dados. Convidamos você a conhecer a Formação Python para Data Science, uma trilha de estudos completa que inicia em Python, passa pelas principais bibliotecas de Ciência de Dados (como NumPy e Pandas) e trabalha as bibliotecas de visualização de dados. Lembrando que não precisa de pré-requisitos em programação para começar!

Se você já deu seus primeiros passos em Ciência de Dados, também te convidamos a conhecer o Challenge de Data Science 1° Edição, um desafio pensado para ser trabalhado em 4 semanas, no qual você vai desenvolver um conjunto de análises e modelos de machine learning para auxiliar na resolução de um case. Lembrando que somente estudantes da Alura têm acesso ao Challenge.

Mergulhe em Tecnologia! 🤿🌊

Créditos

Conteúdo: Marcus Almeida

Produção técnica: Rodrigo Dias

Produção didática: Morgana Gomes

Designer gráfico: Alysson Manso

Marcus Almeida
Marcus Almeida

Bacharelando em Engenharia Elétrica pelo Instituto Federal do Maranhão. Atuou como parte do Scuba Team da Escola de Dados na Alura, trabalhando com conteúdos voltados a Data Science, Machine Learning, Python e SQL. Adora conversar tecnologia, universo geek, games e também aprender coisas novas.

Veja outros artigos sobre Data Science