Data scientist #2 | Visualizando dados em python.
Esse é um dos blogs de uma série que estou fazendo para cientistas de dados, onde apresento ferramentas e conhecimentos da área. Todos os blogs com programação, como esse, terá um foco principal em Python e SQL, duas linguagens ótimas com o que nós vamos trabalhar.
Todos os códigos foram criados na plataforma do Google Colab, um ambiente para desenvolvedores, possibilitando executar códigos diretamente no navegar, com acesso gratuito a GPUs e TPUs. Caso queiram saber mais sobre o funcionamento, recomendo o vídeo MELHOR FORMA DE APRENDER PYTHON (Google Colab Notebook) de Felipe Deschamps.
Base de dados
De forma simples, uma base de dados é um conjunto organizado de informações ou dados relacionados entre si e armazenados eletronicamente em um sistema de computador. Essas bases podem ter diversos formatos de arquivo, o que utilizaremos estará em um banco de dados cv. Caso queira explorar mais base de dados, com outros formatos de arquivo, recomendo o Kaggle e UCirvine.
Trabalharemos com o conjunto de dados Iris, que é uma coleção bem famosa e amplamente utilizada para praticar análises de dados e aprendizado de máquina. Consiste em informações sobre amostras de três espécies de íris: setosa, versicolor e virginica. Cada amostra possui quatro características: comprimento e largura da sépala e comprimento e largura da pétala Primeiro, vamos aprender a visualizar tudo isso. Com a ferramenta pandas, uma biblioteca de manipualção e analise de dados.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
Essas são as bibliotecas que utilizaremos para a visualização dos dados, não pretendo me aprofundas nesse blog todas essas ferramentas, muitas delas são importantes para cientista de dados, utilizada para estatística e manipulação de dados, então caso esteja interessado, eu recomendo buscar documentação, são bem dinâmicas e pythonicas, com uma linguagem bem simples.
base = pd.read_csv('Iris.csv')
Aqui está uma leitura da base de dados, e com uma visualização nós temos o seguinte resultado
Antecedendo a visualização, eu resolvi limpar os dados e os reajustar, retirando toda a coluna Id e alterando os nomes da colunas para português.
base = base.drop(columns='Id')
base.columns = ['Sépala_Comprimento', 'Sépala_Largura', 'Pétala_Comprimento', 'Pétala_Largura', 'Espécies']
Agora com uma simples visualização da base de dados podemos ver o novo resultado com as alterações.
VISUALIZAÇÕES
Agora que importamos e ajustamos a base de dados, finalmente temos a oportunidade de explorar essa base de dados. Como o objetivo principal das informações que temos é a classificação do tipo de Íris, podemos visualizar a quantidade de cada espécie que temos dentro dessa base de dados usando um gráfico de barras;
sns.countplot(base['Espécies']);
Aqui temos uma visualização da quantidade de itens de cada espécie na base de dados. Temos 50 Íris setosa, 50 Íris vsersicolor e 50 Íris virginica. Como havia dito anteriormente; são dados utilizados com frequência para questões didáticas, então todas as informações foram organizadas de uma forma mais intuitiva, mas normalmente não é normal ver a mesma quantidade de classes na base de dados, é sempre bom visualizar para verificar para ver se precisa de uma limpeza nas informações.
Mas ainda há outros parâmetros para visualizarmos, como o comprimento e largura das sépalas e pétalas. É possível nós usarmos os diagramas de caixa para analisarmos a variação dos valores, o máximo e mínimo que cada um desses conjuntos alcança.
valores = base.columns[:-1]
fig, ax = plt.subplots(len(valores), 1, figsize=(9, 9))
for i in range(len(valores)):
sns.boxplot(x=valores[i], data=base, ax=ax[i])
Novamente é interessante compreender que a visualização dos dados ajuda na analise de informações, nesse caso é possível entender a dispersão dos dados. Analisando somente o comprimento das pétalas, podemos afirmar que os valores tem um viés para valores mais altos, pois a faixa preta que divide as caixas, é a mediana do conjunto, mesmo a barra azul tendo uma cobertura para o lado esquerdo, não quer dizer nada, então é necessário visualizar e entender o tipo de visualização.
Mas agora invés de visualizarmos os parâmetros individualmente, vamos verificar se existe uma correlação entre eles, se existe alguma conexão entre as o comprimento da pétala e a largura dela por exemplo, e isso tem um método bem simples, podemos usar um mapa de calor.
dados = base.corr()
sns.heatmap(dados, annot=True, fmt='.2f', linewidths=0.5, linecolor='white', mask=np.triu(dados), cmap='Blues')
plt.show()
O mapa é bem intuitivo, poderia ser comparado com um batalha naval, onde a localização dos itens está marcado em coordenadas horizontais e verticais. Eu escolhi alterar as cores para a visualização ficar mais nítida, mas isso é só uma opção de várias outras.
Além do mapa de calor, também existe o mapa para correlação da própria biblioteca, onde ele identifica a correlação e cria gráficos de dispersão e gráficos de áreas para uma analise ainda mais visual dos valores. Ela pode parecer meio confusa de inicio, mas é semelhante a dinâmica do mapa de calor, só que com mais detalhes.
sns.pairplot(base, hue='Espécies', corner=True, palette='Blues')
plt.show()
E agora?
Eu falei bem pouco, apenas passei superficialmente por diversos conteúdos, como as bibliotecas citadas. Citei apenas alguns gráficos existentes, existe o de pizza, linhas, redes e entre outras várias formas para a visualização dos dados, apenas demonstrei os métodos que eu utilizo para poder visualizar e entender melhor as bases de dados que tenho. Sempre é necessário ter essa capacidade para poder explorar e comunicar melhor as informações dentro de seu arquivo.
Lembrando que nada que eu disse caracteriza ou não uma boa visualização, é necessário compreender e diferenciar cada caso para entender o melhor caminho para se executar.
- Código: https://github.com/Borboleta-Vermelha/BLOGS/blob/main/Visualizando_e_trabalhando_com_dados.ipynb
- Base de dados: https://github.com/Borboleta-Vermelha/BLOGS/blob/main/Iris.csv
E logo mais terá mais postagens desse mundo de data Science. 🦋