Ícone do site Taller

Data Visualization com Python [Level I]

Python é uma linguagem que frequentemente tem aparecido nas listas de tendências entre os programadores nos últimos anos. Servindo para os mais variados propósitos, como criar jogos, construir aplicações web, desenvolver negócios, ferramentas empresariais e, os mais citados, data science e machine learning.

Suas bibliotecas (lib) robustas atraem não somente desenvolvedores mas também cientistas de dados pois possibilitam a criação de incontáveis gráficos e análises estatísticas.

Ou seja, Python é extremamente eficiente já que, como descreveu Eric Matthes em seu livro Python Crash Course, seus programas fazem mais com menos linhas de código – principalmente quando comparado ao que muitas outras linguagens exigem. Com código “limpo”, fácil de ler, depurar, estender e de expandir.

Nesse artigo mostraremos alguns exemplos, inicialmente, mais básicos de como essa linguagem pode nos auxiliar em análises financeiras com gráficos e estatísticas e, também, indicar alguns ambientes de desenvolvimento que auxiliam em nossas tarefas.

 

Instalando o Python

Primeiramente, no Linux Ubuntu, abra o terminal (Ctrl + Alt + T) e verifique a versão do Python instalada:

 

$ python3 -V

Ou:

$ python3 –version

 

Para instalar, basta seguir os comandos abaixo:

 

$ sudo apt-get install python3

 

Caso utilize outro sistema operacional ou tenha algum problema em instalar o Python em sua máquina, este vídeo do canal Curso em Vídeo pode te ajudar no passo a passo.

 

Google Colab

Colaboraty é uma plataforma do Google que permite escrever e executar códigos em Python no próprio navegador sem nenhuma necessidade de configuração inicial, é similar ao Jupyter notebook. É possível acessar diretamente pelo Google Drive, conforme print abaixo, e seus código estarão salvos automaticamente.

 


 

Por ser prático e simples de utilizar, pode ser um ótimo ponto para a inicialização nesta linguagem. 

 

Heatmap [mapa de calor] – Colab

O gráfico de mapa de calor é uma ótima forma de representar através de cores os valores contidos em um intervalo, ou amostra específica. Apesar de ser disseminado em várias áreas, apenas recentemente aparece com mais frequência na financeira. Abaixo mostramos um exemplo de um mapa de calor e as linhas de código, dividimos o lucro de uma empresa X em trimestres nos últimos 3 anos:

 

import seaborn as sns  #importar a biblioteca Seaborn
import pandas as pd #importar a biblioteca pandas
import numpy as np #importar numpy
import matplotlib.pyplot as plt  #importar Matplotlib

#faz com que o gráfico seja mostrado no notebook
%matplotlib inline

uri = "https://raw.githubusercontent.com/andersonpedrocunha/python/master/lucro%20teste%20-%20P%C3%A1gina1%20(1).csv"
lucro = pd.read_csv(uri) #ler a uri

#cmap -> cor do mapa
#yticklabel -> label do eixo y
#fmt -> número de casas decimais
#size -> tamanho da fonte
plt.figure(figsize=(10,5)) #dimensão da figura
ax = sns.heatmap(lucro, yticklabels=['2019','2018','2017'], 

                 center=0, cmap='GnBu', annot=True, fmt='.2f'

                 linewidths=.1, annot_kws={'size':12})

 

Quanto ao URI podemos obtê-lo através do upload de um arquivo no GitHub. Após o procedimento, abra o arquivo dentro da plataforma e escolha a opção raw e copie o URI gerado no navegador.

 

Após o upload do arquivo no GitHub em formato .csv clique em raw:

Copie a URI gerada:

E cole em seu programa para gerar o gráfico desejado.

 

Estatísticas simples

Usando o comando describe você obterá as principais estatísticas da sua série, como a contagem, média, desvio padrão, mínimo, máximo e o percentil. 

Por exemplo:

 

O Google Colaboratory é capaz de gerar inúmeros outros gráficos e análises estatísticas, no site você pode aprender novos exemplos. Seguiremos com o PyCharm no restante do artigo.

 

PyCharm

É um outro ambiente de programação, e é também bastante difundido entre os desenvolvedores Python. Os próximos exemplos serão elaborados nesta plataforma. Para baixar bastar acessar https://www.jetbrains.com/pycharm/ e fazer o download gratuitamente. 😉 

 

Após baixar o programa, crie um novo projeto em Create New Project. Dentro da plataforma abra um novo arquivo file e depois escolha python file, pronto você já pode começar a programar.

Observação: você precisará instalar em sua máquina as bibliotecas Pandas, Seaborn, Numpy e outras que utilizar.

O mesmo exemplo anterior do lucro trimestral no PyCharm:

 

Heatmap [mapa de calor] – Pycharm

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

uri = "https://raw.githubusercontent.com/andersonpedrocunha/python/master/lucro%20teste%20-%20P%C3%A1gina1%20(1).csv"
lucro = pd.read_csv(uri)

plt.figure(figsize=(20,5))
ax = sns.heatmap(lucro, yticklabels=['2019','2018','2017'],
                center=0, cmap='GnBu', annot=True, fmt='.2f',
                linewidths=.1, annot_kws={'size':12})

plt.title('Lucro por trimestre')  #título do gráfico
plt.ylabel('Anos') #rótulo eixo y
plt.xlabel('Trimestre') #rótulo eixo x
plt.show()  #exibir gráfico

Line Chart

Perfeitos para séries temporais, o gráfico de linha é uma ótima opção para mostrar o comportamento de uma variável no tempo. 

O exemplo 1 representa a receita e o custo ao longo dos seis primeiros meses do ano e o exemplo 2 utiliza subplots, que por sua vez são pequenos gráficos “plotados”. ara exibir três gráficos com a receita de cada ano com diferentes marcadores. Com os subplots podemos comparar distintos gráficos simultaneamente.

 

EXEMPLO 1

import numpy as np #importar a biblioteca Seaborn
import matplotlib.pyplot as plt #importar a biblioteca Pandas

months = [1,2,3,4,5,6] #números de meses
revenue = [1000, 5000, 4000, 10000, 8000,11000] #receita mensal
costs = [2000,4000,5000,8000,5000,8000] #custo mensal

#marker -> estilo do marcador
#color -> cor da linha
#linestyle -> estilo da linha
plt.plot(months, revenue, marker='o', color='blue', linestyle='--')
plt.plot(months, costs, marker='s', color='red')

#plt.title -> título do gráfico
#plt.xlabel -> rótulo do eixo x
#plt.ylabel -> rótulo do eixo y
plt.title("Financial result")
plt.xlabel("Months")
plt.ylabel("revenue R$")

plt.legend(["revenue","costs"], loc=4)

plt.show()

EXEMPLO 2

Subplots

import numpy as np
import matplotlib.pyplot as plt

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep","Oct", "Nov", "Dec"]
revenue_2019 = [200, 90, 180, 75, 85, 150, 100, 160, 70, 52, 52, 100] #receita 2019
revenue_2018 = [170, 280, 90, 70, 6, 160, 360, 45, 120, 90, 400, 230] #receita 2018
revenue_2017 = [100, 35, 190, 115, 205, 120, 80, 105, 130, 140, 160, 180] #receita 2017

#subplot(m,n,p)
plt.subplot(2, 1, 1

plt.plot(months, revenue_2019, marker='o', color='blue')
plt.plot(months, revenue_2018, marker='.', linestyle=':', color='green')
lt.plot(months, revenue_2017, marker='s', linestyle='--', color='gray')
plt.title("revenue R$ (x1000)")
plt.legend(['2019', '2018', '2017'])

#subplot(m,n,p)
# Subplot 1
plt.subplot(2, 2, 2) #gerar subplot 2 na posição 2
plt.plot(months, revenue_2019, marker='o', color='blue')
plt.title("revenue_2019 (x1000)")
plt.legend(['2019'])

# Subplot 2
plt.subplot(2, 2, 3) #gerar subplot 2 na posição 3
plt.plot(months, revenue_2018, marker='.', linestyle=':', color='green')
plt.title("revenue_2018 (x1000)")
plt.legend(['2018'])

# Subplot 3
plt.subplot(2, 2, 4) #gerar subplot 2 na posição 4
plt.plot(months, revenue_2017, marker='s', linestyle='--', color='gray')
plt.title("revenue_2017 (x1000)")

#ajustar posição dos subplots
plt.subplots_adjust(wspace=0.35, bottom=0.1, hspace=0.45)

#gerar gráficos
plt.show()

Pie Chart

O gráficos de pizza atualmente não são a primeira opção de quem deseja fazer uma apresentação de dados visual mais robusta, no entanto, para indicar proporções de uma série de dados ainda pode ser uma importante ferramenta.

O exemplo 1 mostra a proporção de vendas de frutas, colocando em destaque uma delas. Já o exemplo 2 mostra uma carteira de investimento e o percentual de cada um no gráfico.

 

EXEMPLO 1

import matplotlib.pyplot as plt

# Gráfico de pizza, onde as fatias serão ordenadas e plotadas
labels = 'Laranja', 'Banana', 'Melancia', 'Abacate'
sizes = [20, 30, 40, 10] # tamanho das fatias
explode = (0, 0.1, 0, 0# only "explode" the 2nd slice (i.e. 'Banana')

fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
       shadow=True, startangle=90)  # gráfico de pizza
ax1.axis('equal' # Proporção de aspecto igual garante que a torta seja desenhada como um círculo.

plt.show()

EXEMPLO 2

import numpy as np
from matplotlib import pyplot as plt

investimentos = ['Tesouro Direto', 'CDB', 'Ações', 'FIIs', 'Debêntures'] #tipos de investimentos na carteira
proporcao = [25000, 15000, 5000, 8000, 5000] #valores em cada modalidade de investimento




#plotando o gráfico
plt.figure(figsize=(10,8))
plt.pie(proporcao, labels=investimentos, autopct="%1d%%")

plt.title('Carteira de Investimentos')

plt.show()

 

Bar chart

Os gráficos de barras são eficientes em comparar variáveis ou períodos diferentes pelo tamanho ou comprimento das barras, podem ser desenhados verticalmente ou horizontalmente. 

O exemplo 1 é a receita de uma determinada empresa no primeiro semestre do ano de forma vertical e o exemplo 2 de forma horizontal.

 

EXEMPLO 1

import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt

months = ('jan', 'fev', 'mar', 'abr', 'mai', 'jun')
y_pos = np.arange(len(months)) #define a posição dos dados no eixo y
performance = [500,800,600,400,200,1000#performance ou receita da empresa

#plotando o gráfico de barras verticais
plt.bar(y_pos, performance, align='center', alpha=0.5) 
plt.xticks(y_pos, months) #define os locais e os rótulos dos xticks
plt.ylabel('Receita R$')
plt.title('Receita 1º semestre')

plt.show()

 

EXEMPLO 2

import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt

months = ('jan', 'fev', 'mar', 'abr', 'mai', 'jun')
y_pos = np.arange(len(months))
performance = [500,800,600,400,200,1000]

#plotando o gráfico de barras horizontais ou de colunas
plt.barh(y_pos, performance, align='center', alpha=0.5)
plt.yticks(y_pos, months)
plt.ylabel('Meses')
plt.title('Receita 1º semestre')

plt.show()

 

 

Apresentar e mapear os dados de uma forma visual e que seja de fácil entendimento de todos do time tem sido um dos assuntos mais recorrentes dentre as empresas. Uma vez que quando temos noção de como estão os indicadores de performance e resultado conseguimos tomar decisões mais assertivas sobre o futuro do negócio, assim como readequar o planejamento estratégico.

Enfim, para se aprofundar mais no assunto, visite a biblioteca matplotlib e seaborn para conhecer um mundo de opções de diferentes gráficos e estatísticas que atendam à sua demanda. Até a próxima!

Sair da versão mobile