Visualização de dados com Python

Bibliotecas de visualização de dados com Matplotlib e Seaborn.

A visualização de dados é uma representação visual (ou gráfica) dos dados para encontrar insights úteis (ou seja, tendências e padrões) nos dados e tornar o processo de análise de dados mais fácil e simples.

O objetivo da visualização dos dados é construir uma compreensão rápida e clara dos dados à primeira vista e torná-los visualmente apresentáveis para compreender as informações.

No Python, várias bibliotecas abrangentes estão disponíveis para criar gráficos estatísticos de alta qualidade, atraentes, interativos e informativos (2D e 3D).

Bibliotecas populares de visualização de dados

  • Seaborn é construída sobre o Matplotlib, que tem uma interface de alto nível com designs atraentes. Além disso, reduz as linhas de código necessárias para produzir o mesmo resultado que em Matplotlib.
  • Pandas é uma grandíssiam biblioteca Python para análise de dados (manipulação de dados, análise de séries temporais, integração de indexação de dados, etc.). Pandas Visualization (construído em cima de Matplotlib) é uma ferramenta da biblioteca Pandas que nos permite criar uma representação visual de quadros de dados (dados alinhados na forma tabular de colunas e linhas) e séries (matriz unidimensional rotulada capaz de manter dados de qualquer tipo) muito mais rápido e mais fácil.
  • A biblioteca Plotly é usada para criar plots interativos e multidimensionais facilitando o processo de análise de dados, fornecendo uma melhor visualização para os dados.

Com este artigo, poderemos visualizar os dados de diferentes formas, aprendendo a traçar dados em diferentes bibliotecas Python e entender onde usar quais adequadamente.

Podemos usar o Google Colaboratory para evitar o processo de instalação de bibliotecas. Todas as bibliotecas podem ser usadas simplesmente importando-as no notebook.

Entendendo o básico do Maplotlib

Elementos do Gráfico

  • Axes: A área sob a “figure” onde o gráfico está sendo construído (ou a área em que o plot aparece) é conhecida como eixos. Pode haver vários eixos em uma única figura.
  • Axis: Esta é a linha numérica presente no gráfico que representa a faixa de valores para o enredo (eixo X e eixo Y como mencionado na figura acima). Pode haver mais de dois eixos no gráfico no caso de um gráfico multidimensional.
  • Title: O título está posicionado no centro acima dos eixos, dando uma visão geral da trama.

Importação do conjunto de dados

Podemos importar esse conjunto de dados de duas maneiras:

1. Usando a biblioteca Scikit-learn:

import matplotlib.pyplot as plt
from sklearn import datasets
iris = datasets.load_iris()
#print(iris)

Importação do conjunto de dados Iris usando biblioteca Scikt-learn.

Sem baixar o arquivo, podemos importar diretamente o conjunto de dados no espaço de trabalho usando a biblioteca de aprendizado sckit disponível em python..csv

2. Usando a biblioteca Pandas:

Usando o código acima (importando a biblioteca pandas) e baixando o formato do conjunto de dados podemos importar os dados em nosso espaço de trabalho. Estes são os primeiros cinco elementos no conjunto de dados:

Carregamento com Pandas

Ambos os métodos acima mencionados podem ser usados para importar o conjunto de dados e para criar gráficos, mas usaremos este último devido à melhor legibilidade dos dados (como você pode ver a diferença nos resultados de saída de ambos os métodos).

Começando com Matplotlib

import matplotlib.pyplot as plt

Gráficos de linha

import matplotlib.pyplot as plt
import numpy as plt
x = np.linspace(0, 20, 30)
y = x**2
plt.plot(x, y)
plt.show()
Gráfico de linha de y=x²

Podemos adicionar mais algumas funções ao nosso plot para tornar muito mais fácil de interpretá-lo:

import matplotlib.pyplot an plt 
import numpy as np
x = np. linspace(0,20,30)
y= x**2
plt.plot(x, y)
plt.xlabel('Eixo ')
plt.ylabel('Eixo Y)
plt.title('Plot de linha')
plt.grid(True)
plt.show()

Com a adição dessas funções, o gráfico se torna muito mais legível e mais fácil de analisar.

Podemos adicionar mais de uma linha ao nosso enredo e torná-las distinguíveis usando cores diferentes e algumas outras características:

Gráfico de linha de y=x² e z=x³

No código acima, adicionamos outra variável (z=x³) e mudamos o estilo e a cor da linha.

Para alterar a cor de uma linha no gráfico de linha temos que adicionar parâmetro color na função.

Para alterar o estilo do gráfico de linha temos que adicionar no parâmetro plt.plot ‘*’ ou ‘-’, etc.

Da mesma forma, podemos criar gráficos para funções matemáticas também:

import numpy as np
plt.plot(np.sin(x),label='sin(x)',color = 'orange')
plt.plot(np.cos(x),label='cos(x)',color = 'green')
plt.xlim(10,100)
plt.legend()
plt.title('math functions')
plt.show()

Podemos ajustar o limite de eixos usando as funções para eixo x e para eixo y.plt.xlim(lower_limit,upper_limit)

Para rotular ainda mais o plot, podemos adicionar com função, ele ajudará a identificar qual linha significa qual função.legendplt.legend()

Criando subplots

plt.sublots() função cria uma figura e grade de subplots, nas quais podemos definir o número de colunas e linhas passando um valor como parâmetro. Além disso, também podemos alterar o espaçamento entre os sublopts usando o argumento. Depois disso, simplesmente usando o número do índice para o subplotpodemos facilmente traçar os gráficos.intgridspec_kw = {'hspace': , 'wspace': }

Criando Subplots

Scatter Plots

Os gráficos de dispersão podem ser usados para analisar como uma variável afeta as outras variáveis. (Podemos usar qualquer número de variáveis que queremos traçar no gráfico.)

iris.plot(
kind = 'scatter',
x = 'petal.length',
y = 'petal.width')
plt.show()

Aqui, estamos comparando as diferentes espécies de flores presentes no conjunto de dados.

Gráfico de dispersão de conjunto de dados de Íris

Mas, aqui seria muito difícil para analisarmos e extrairmos informações desse enredo porque não podemos diferenciar entre as classes presentes.

Então, agora, vamos tentar outra abordagem que resolverá nosso problema. Neste método, usaremos para criar um gráfico de dispersão.plt.scatter()

Para mudar a cor dos pontos com base nas espécies de flores, podemos criar um dicionário com armazenamento das cores correspondentes aos nomes da espécie. Usando o loop, criamos um único gráfico de dispersão de três espécies diferentes (cada uma representada por uma cor diferente).for

colours = {
'Setosa':'orange',
'Versicolor':'lightgreen',
'Virginica':'lightblue'}
for i in range(len(iris['sepal.length'])):
plt.scatter(iris['petal.length'][i],iris['petal.width'][i], color = colours[iris['variety'][i]])
plt.title('Iris')
plt.xlabel('petal length')
plt.ylabel('petal width')
plt.grid(True)
plt.show()

Este Plot criado é muito melhor do que o anterior. Os dados das espécies tornaram-se mais fáceis de distinguir e dão uma clareza geral para uma análise mais fácil das informações.

Gráfico de dispersão colorido do conjunto de dados iris

Gráfico de barras

a = iris['variety'].value_counts()
species = a.index
count = a.values
plt.bar(species,count,color = 'lightgreen')
plt.xlabel('species')
plt.ylabel('count')
plt.show()

Aqui estamos usando o conjunto de dados de Iris, para comparar a contagem de diferentes espécies de flores (no entanto, elas são iguais a cinquenta). Para encontrar a contagem de cada categoria única no conjunto de dados estamos usando a função.

Este é o tipo mais básico de gráfico de barras, podemos experimentar algumas variações deste plot como vários gráficosa de barras na mesma figura, alterar a largura das barras (usando parâmetro) ou criar um gráfico de barras empilhado (usando parâmetro).width=bottom

Box plots

Excluímos a coluna de espécies aqui, pois estamos apenas comparando todas as flores do conjunto de dados da íris. Criamos o plot da caixa usando a função:


length_width = iris[
['petal.length','petal.width','sepal.length','sepal.width']]
length_width.boxplot()
plt.xlabel('Flower measurements')
plt.ylabel('values')
plt.title("Iris dataset analysis")
plt.show()

Histogramas

Margens de erro

length_width
import numpy as np
x = np.linspace(0,10,19)
data_ = np.cos(x)
yerr = 0.5
#xerr = 0.5
plt.errorbar(
x, data_, yerr = yerr,
fmt='o',
color = 'gold',
ecolor='silver',
label = 'cos(x)')
plt.xlabel('cos(x)')
plt.title('Error bars - cos(x)')
plt.legend(loc='upper right')
plt.show()

Para traçar as barras de erro, temos que usar a função onde e são locais de ponto de dados, e definir o tamanho das barras de erro (neste código estamos usando apenas ).

Também podemos alterar o estilo e a cor das barras de erro usando parâmetro (como definimos o estilo para pontiagues neste exemplo específico), para alterar a cor dos pontos e parâmetro para mudar a cor das linhas verticais.

Adicionando parâmetro na função podemos determinar a posição da legenda no gráfico.

Margens de erro

Mapas de Calor

Com a ajuda de mapas de calor, podemos ter uma análise rápida e profunda dos dados visualmente. Neste exemplo, estamos usando o conjunto de dados de íris para criar um mapa de calor. O mapa de calor é criado usando a função onde passamos o conjunto de dados (para definir o estilo e a cor do plot) como argumentos. E finalmente para adicionar anotações (os valores que você pode ver mencionados sobre os blocos de cores) usamos dois para loops..corr() .imshow()correlationcmap.figure.colorbar()

Seaborn

Além disso, as linhas de código exigidas são reduzidas em uma extensão muito grande.

import seaborn as sns
sns.set_style('darkgrid')
sns.lineplot(data = iris.drop(['variety'], axis = 1))
plt.show()

Gráficos de linha

Gráfico de linhas usando biblioteca de seaborn

Gráfico de dispersão

Scatter plot com Seabron

Aqui, usamos a função (com a qual podemos explorar rapidamente nosso conjunto de dados) para criar o plot no qual podemos definir (ou seja, cores para pontos de dispersão) e função para definir o tipo de gráfico.

Bar Plots

a = iris['variety'].value_counts()
species = a.index
count = a.values
sns.barplot(x = species, y = count)
plt.show(
Gráfico de barras usando Seaborn

Histograma

sns.FacetGrid(iris, hue="variety", height=5) \   
.map(sns.distplot, "petal.length") \
.add_legend()
plt.show()

Seaborn dá mais recursos para visualização de dados do que matplotlib.

Mapa de Calor

Multiplas linhas de código no matplotlib reduzidas a duas em Seaborn

Pair plots

sns.pairplot(iris, hue="variety", height=5);plt.show()

By using function we can create pair plots ( is used to adjust the height of the plots).

Pairplot usando biblioteca de seaborn

Obrigado

Composing a repository of books (i bought), authors (i follow) & blogs (direct ones) for my own understanding.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store