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!