Python: Visualizando dados com Matplotlib e Seaborn

O Python é uma linguagem que tem a notoriedade de ser amplamente utilizada no mundo da análise de dados em geral. Esse ponto forte não se dá somente por sua força na realização de cálculos, de forma rápida e fácil, mas também pela possibilidade de criar gráficos úteis para a análise dos dados e na comunicação de resultados. No post de hoje, mostraremos duas bibliotecas importantes do Python para a criação de gráficos: Matplolib e Seaborn.

Primeiro carregamos as bibliotecas necessárias para que possamos trabalhar com os dados no Python.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
# !pip install python-bcb
from bcb import sgs

Para os exemplos dos gráficos iremos importar os dados através do Sistema Gerenciador de Séries do Banco Central. Utilizaremos duas séries: a variação do IPCA mensal e o desemprego medido pela PNADC.

ipca = sgs.get({'IPCA' : 433}, start = "2010-01-01")
desemprego = sgs.get({'desemprego' : 24369})
data = desemprego.merge(ipca, on = 'Date', how = 'left')

Matplotlib

O Matplotlib é uma biblioteca do Python com a funcionalidade de criar gráficos 2D. Tem como ponto positivo a variedade de gráficos e formas de construção em conjuntos com diversas bibliotecas para análises de dados e entre outros formatos.

Matplotlib transformas os dados em figuras, cada uma contendo uma ou mais eixos, especificando os pontos gráficos em coordenadas x-y. Para cada tipo de gráfico existe um função específica, que a depender da forma em que os dados necessitam se dispor no gráfico, deve ser indicado pelos seus argumentos.

Vemos um exemplo com a série da variação mensal do IPCA. Como a data se insere dentro do índice do data frame, e existe uma única coluna contendo os dados, o plot do Matplotlib reconhece automaticamente como devem ser utilizados os eixos, sendo apenas necessário especificar os dados na função.

O resultado é um gráfico de série temporal em que o eixo x são as datas ordenadas e o eixo y corresponde aos valores do IPCA mensal. A cada mês demonstra a variação desses valores.


plt.plot(ipca)
plt.style.use('default')

Continuando com o mesmo data frame, vemos agora um gráfico de Histograma, que demonstra a frequência de valores da nossa série. Quanto mais frequentes determinado valores, maior será a barra denotada pelo eixo y.  Vemos que os valores entre 0,25% e 0,50% são os mais recorrentes para o IPCA mensal. Como queremos apenas um vetor de dados para criar este gráfico, acessamos a coluna IPCA para que seja possível utilizar o gráfico.
O Matplotlib também possibilita realizar mudanças estéticas e textuais nas figuras. Vamos realizar algumas mudanças:

plt.hist(x = ipca['IPCA'],
         color = "darkblue",
         bins = 20)
plt.title("valores de jan de 2010 a jan de 2022")
plt.suptitle("Histograma da variação mensal do IPCA")
plt.style.use('ggplot')

Podemos ver uma relação entre duas variáveis a partir de um gráfico de dispersão. Vemos qual a relação entre o desemprego e o IPCA.

plt.scatter(x = data['desemprego'], y = data['IPCA'])
plt.title("Relação Desemprego x IPCA")
plt.style.use('classic')

Seaborn

Outra biblioteca muito utilizada para a construção de gráficos com o Python é o Seaborn, que é baseado no Matplotlib e provê uma interface mais elaborada para construir gráficos com enfoque estatístico.
O Seaborn possui como propósito a simplicidade de construir um gráfico com enfoque para análise de dados, sem dar a preocupação ao usuário de ficar se preocupando com detalhes visuais.
Iremos repetir os gráficos construídos anteriormente, porém, com o Seaborn.
Assim como o Matplotlib, o Seaborn possui uma função para cada gráfico, a diferença está nos argumentos e os elementos padrões.
Vemos como podemos criar um gráfico de série temporal da variação mensal do IPCA.
sns.set_theme()
sns.lineplot(data = ipca)

Com o Seaborn, podemos ver a melhora gráfico e de elemento para o Histograma.

sns.displot(data = ipca, x = 'IPCA', kde = True)

E também a facilidade criar gráficos de correlação com retas de regressão.

sns.regplot(data = data, x = 'desemprego', y = 'IPCA')

Quer aprender mais sobre Python?

Confira nossos cursos de Estatística com Python e Python para Economistas. Nestes cursos elencamos os principais pontos para conhecer o mundo do Python e a aplicação de problemas reais.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como automatizar tarefas repetitivas usando Python? Um exemplo para largar o Excel

Manter relatórios diários com dados e análises atualizados é um desafio, pois envolve várias etapas: coleta de dados, tratamento de informações, produção de análises e atualização de relatório. Para superar este desafio algumas ferramentas como Python + Quarto + GitHub podem ser usadas para automatizar tudo que for automatizável. Neste artigo mostramos um exemplo com dados do mercado financeiro.

Criando um Dashboard de análise de Ações no Python

Um Dashboard é um painel de controle que consolida uma variedade de informações sobre um determinado objeto de estudo em um ou mais painéis. Ele simplifica significativamente o processo de análise de dados, oferecendo uma visão global e fácil de entender. Uma maneira simples de construir um Dashboard para acompanhar uma ação específica é utilizando duas ferramentas: Quarto e Python. Neste post, mostramos o resultado da criação de um Dashboard de Ação.

Analisando séries temporais no Python e esquecendo de vez o Excel

Séries temporais representam uma disciplina extremamente importante em diversas áreas, principalmente na economia e na ciência de dados. Mas, afinal, como lidar com esses dados que se apresentam ao longo do tempo? Neste exercício, demonstraremos como compreender uma série temporal e como o Python se destaca como uma das melhores ferramentas para analisar esse tipo de dado.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.