Data Viz

Quarteto de Anscombe – Porque você deve sempre visualizar seus dados

Quarteto de Anscombe

Por que você deve sempre visualizar seus dados

Quarteto de Anscombe: Visualizando os gráficos de dispersão abaixo, você imaginaria que os quatro resultam em estatísticas descritivas praticamente idênticas?

Nem eu! 🤪 

Por isso, resolvi buscar os dados, plotá-los e visualizar algumas estatísticas. 

Para saber mais, continue lendo este artigo e se tiver algum comentário ou sugestão, deixe lá no final, na caixa de mensagens 😁

Vamos lá! 

Se você quiser, pode acompanhar o notebook no repositório no Github abaixo:

Quarteto de Anscombe

Acesse o notebook aqui!

O quarteto de Anscombe foi construído por um estatístico inglês chamado… Francis Anscombe 😛

Basicamente, o conjunto de dados possui algumas características que podem “enganar” uma regressão linear.

O estudo também é muito discutido quando falamos sobre a importância da visualização de dados. Somente quando são plotados que notamos uma grande diferença. Na verdade, notamos que os dados possuem comportamentos totalmente diferentes.

Obs: O objetivo deste artigo não é falar sobre Regressão Linear e/ou como interpretar os modelos. Se você quiser saber mais, recomendo muito esta playlist no Youtube (em inglês): Simple Linear Regression.

O livro da série “Use a cabeça” – Análise de Dados aborda regressão linear de forma bastante didática (na verdade, o livro todo tem vários exemplos e conceitos introdutórios bem simples de entender). Você pode adquirir o livro no site da Amazon clicando aqui.

Voltando ao Quarteto de Anscombe, a biblioteca Seaborn possui o método que nos permite visualizar e estudar estes dados.

Vamos importar o dataset e atribuí-lo na variável “df”:

Com 44 linhas e 3 colunas, o dataset é bem simples e os números não diferem muito entre si.

Temos 4 “datasets” diferentes, que vai do I até o IV. O menor valor do nosso eixo X é 4 e o máximo 19. Para os valores Y, o range não chega a 10 (mínimo 3.1 e máximo de 12.74).

Para visualizarmos algumas estatísticas, criei uma função que resulta em uma regressão simples para cada um dos valores na variável (coluna) dataset.

Quer melhorar seu histograma utilizando a biblioteca Seaborn? Clique aqui e leia o artigo completo:

Data Viz – Como melhorar seu histograma com Seaborn

@Author: Dai

Agora, vamos usar a função em nosso Anscombe’s dataset, armazenar cada um dos resultados e compará-los:

Como podemos ver no DataFrame acima (DataFrame “aux”), os valores de B0 e B1 diferenciam muito pouco em cada um dos testes. Se formos considerar o arredondamento então, é praticamente nada.

Analisando somente a estatística básica, como média, variância e os resultados da regressão linear, como o intercepto e coeficiente de determinação, não vemos praticamente nenhuma diferença.

Mas quando plotamos os dados…

Analisando os plot’s, vemos que o modelo 01 se ajusta muito bem a um modelo de regressão linear.

O comportamento dos dados do modelo 02 se mostra não linear e a diferença fica ainda mais clara no último plot com dados que uma regressão linear não poderia explicar.

Claro que os dados se tratam de um estudo e na vida real, é praticamente impossível nos depararmos com uma situação exatamente igual a esta. Embora possa parecer simples, o quarteto de Anscombe’s é muito interessante para percebermos a importância da visualização de dados e como, matematicamente, nossos modelos podem se enganar.

Se estiver algum comentário, não se esqueça de deixar nos comentários aqui abaixo 👇 👇

Como unificar arquivos no Python

Unificar_arquivos_Python

Como unificar arquivos no Python

Você já recebeu várias planilhas e precisou juntá-las, transformando em um único arquivo? Diversos arquivos onde você precisa abrir a um, copiar o seu conteúdo e colar em uma única planilha? Se sua resposta é sim, você precisa ler este artigo e entender como unificar arquivos no Python.

Recentemente, recebi 5 anos de dados, divididos por meses, eram 60 arquivos que precisavam ser “copiados e colados” um abaixo do outro.

Levaria um bom tempo para realizar essa tarefa manualmente. No Python,- levou uns 10 minutos. E de forma super fácil!

Cadastre-se

Se cadastre no Space Data e tenha acesso a todo o conteúdo exclusivo para membros. É gratuito e sempre será!

Bibliotecas utilizadas

As únicas lib’s que vamos utilizar serão Pandas e a os.

Se quiser conferir a documentação de cada uma, só clicar no link:

Pandas: Documentação aqui

os: Documentação aqui

Arquivos

Imagine que você possui uma pasta com nove arquivos e que ainda precisa concatenar todos esses arquivos em uma única planilha, exceto a “idades.xlsx

Caminho da Pasta

Na variável “caminho” vamos atribuir o caminho da pasta onde estão salvos os nossos arquivos.

Para ficar mais claro o que estamos fazendo, vamos visualizar os arquivos dentro da variável que acabamos de criar:

Note que o nosso “for” percorre todos os documentos dentro da pasta, inclusive o arquivo “idades.xlsx” que não iremos utilizar.

Assim, dentro da nossa estrutura de repetição, vamos utilizar o diferente de ( != ) e ler os demais arquivos. Também vamos inseri-los em uma lista, que chamaremos “files” utilizando o “append”.

Confira também como fazer resumo de textos em Python

Clique aqui e acesse o artigo Resumo de texto em Python

@Author: Adriano Klein

Agora que já temos o nome dos arquivos, precisamos adicionar o caminho da pasta + o nome do arquivo (igual quando lemos um arquivo único no Pandas, certo?). Mas antes, vamos fazer um for e imprimir o resultado para nos certificarmos de que estamos conseguindo chegar no resultado esperado:

Nosso objetivo aqui é adicionar todos os arquivos em um único DataFrameEntão, vamos utilizar a biblioteca Pandas e criar uma estrutura na variável df, veja abaixo:

Por enquanto este DataFrame está vazio. Utilizando novamente uma estrutura de repetição (for), vamos percorrer todos os arquivos salvos na nossa pasta (como mostrado nos passos anteriores) e adicioná-los na variável df, utilizando a função append:

O parâmetro “engine” é necessário pois apartir da versão 2.0.1, só é suportada a leitura de arquivos ".xls". Neste link há mais informações:

 

O resultado será:

Melhorando nosso código

Agora que fizemos o passo-a-passo, vamos organizar nosso código e deixá-lo mais bonito.

Basicamente, vamos reescrevê-lo de uma forma mais otimizada.

Espero que tenha ficado claro e que possa te ajudar nos seus projetos!

 

Qualquer sugestão, crítica ou comentário, deixe aqui no blog para gente!

Data Viz – Como melhorar seu histograma com Seaborn

Melhorando Histograma no Seaborn

Inscreva-se

Se inscreva no Space Data para ter acesso ao conteúdo exclusivo para membros

Histogramas são gráficos bastante utilizados em análises para visualizar a distribuição de dados. Acontece que as configurações padrões das bibliotecas trazem histogramas básicos, bastante simples e nada atraentes. Neste artigo, vamos plotar um histograma utilizando a biblioteca seaborn e utilizar métodos para torná-lo visualmente mais bonito.

Se você não conhece este tipo de gráfico ou quer entender mais sobre o histograma e sua funcão, confira este artigo aqui: O que é um histograma

Dataset utilizado neste artigo

Para exemplificar, vamos utilizar um dataset sobre os índices de felicidade dos países em 2019 (pesquisa divulgada em 2020).

Você pode visualizar os dados aqui

Importacão das bibliotecas

#importação das bibliotecas

import pandas as pd
import seaborn as sns

import matplotlib
import matplotlib.pyplot as plt

Importação do dataset

Precisamos importar o dataset. Clique aqui para acessar o arquivo

Vou armazenar os dados na variável url e então utilizar o método da biblioteca Pandas para tranformá-lo em um DataFrame:

#importacao do dataset

url = ‘https://raw.githubusercontent.com/daianeklein/Space-Data/main/happiness_dataset.csv’

df = pd.read_csv(url)

Confira também: Quatro formas de visualizar seu DataFrame utilizando a biblioteca Pandas

Clique aqui e acesse o artigo

@Author: Dai

Vamos visualizar o dataset rapidamente:

Neste artigo, vamos utilizar a variável ‘Freedom to make life choices”

Plotando o histograma

Este plot está com as configurações default da biblioteca Seaborn. Note que só informamos o dataset e o eixo x.

 

 

Melhorando o histograma

Antes de começar a deixar nosso histograma bonitão, vamos dar uma olhada na documentação e entender quais são os parâmetros que esse gráfico possui.

Documentação

seaborn.histplot(data=None, *, x=None, y=None, hue=None, weights=None, stat='count', bins='auto', binwidth=None, binrange=None, discrete=None, cumulative=False, common_bins=True, common_norm=True, multiple='layer', element='bars', fill=True, shrink=1, kde=False, kde_kws=None, line_kws=None, thresh=0, pthresh=None, pmax=None, cbar=False, cbar_ax=None, cbar_kws=None, palette=None, hue_order=None, hue_norm=None, color=None, log_scale=None, legend=True, ax=None, **kwargs)

Bins

Traduzindo do inglês, bins são as “caixas”, ou seja, cada uma destas barras no nosso histograma.

Vamos alterá-lo para 20, colocando o parâmetro bins = 20..

Cor

Vamos alterar a cor do nosso histograma.

Para isso, vamos utilizar as opcoes do Matplotlib. A lista completa, você pode conferir aqui:

Neste exemplo, vou utilizar a cor ‘steal’:


Não está grande coisa, eu sei. Vamos mudar a cara dele logo então:

Parâmetros element

O parâmetro ‘element’ muda, basicamente, a forma das barras. Você pode escolher:

  • Bars
  • Step
  • Poly


Vamos utilizar o formato ‘step’:

Removendo a borda do gráfico

Para remover esta borda preta, vamos utilizar o parâmetro “despine”

Para remover todas as bordas, vamos utilizar os parâmetros bottom e left = True:

Configurando os eixo X e Y

Como falamos acima, estamos utilizando os dados da variável “Freedom to make life choices” neste histograma.

Sabemos que os valores estão distribuídos no eixo X. Neste exemplo, não vamos utilizar o eixo Y (lembre-se sempre de analisar se este eixo é importante para o leitor ou não, muitas vezes ele é essencial para interpretação do gráfico).

Removendo o eixo Y

Para remover a esca do eixo Y, vamos utilizar o tick_params. 

Ele vem do biblioteca matplotlib, portanto, vamos chamá-lo:

plt.tick_params(axis =’y’, labelsize=0, length = 0) 

y = eixo Y

labelsize = tamanho do rótulo

length = Tamanho dos pontos (são aqueles pequenos pontos no eixo Y)

Removendo o “nome” do eixo Y

Retiramos os valores do eixo Y, mas como remover esse “Count”?

Vamos lá.

Também do Matplotlib, vamos configurar o ylabel, passando uma lista vazia e alterando o tamanho da fonte para 0.

Obs: Alterar o tamanho da fonte é importante, pois caso contrário, ficará dois colchetes no seu eixo ( assim: [] )

Configurando o eixo X:

Vamos alterar o título do eixo X e também alterar a cor e tamanho da escala.

Alterando a escala

Assim como fizemos com o eixo Y, também vamos utilizar o tick_params para configurar o eixo X:

Alterando e configurando o título do eixo

Para melhorar o eixo X, vamos

  • Alterar o título para portugues 
  • Mudar a cor (color)
  • Alterar o tamanho (fontsize)
  • Deixá-lo um pouco mais distante da escala (labelpad)

Estamos quase finalizando!

Agora só falta aumentar um pouco esse histograma e claro, colocar um título nele.

Alterando o tamanho:

Vamos utilizar o método: plt.figure(figsize=(8,6)), onde 8 e 6 é o tamanho do gráfico. Sinta-se à vontade para alterar estes números como ficar melhor em seu projeto.

E para inserir o título e configurá-lo também, vamos utilizar o plt.title, sendo:

pad = Distanciar o texto do gráfico

fontsize = Tamanho do título

color  = Cor do título

fontweight = O tipo da fonte do título, neste caso, selecionado negrito

Ficou muito mais bonito, não é mesmo?

Agora, só para finalizar, vamos tirar esse texto em cima do nosso histograma:

É bastante simples. No final de todos esses códigos, coloque ax = ax

Resultado final

Antes
Depois