1
resposta

Analises temporais financeiras

Quanto eu formato meus dados com $ ou € na frente eu não consigo utilizar o Seaborn para plotar essas grandezas nesse formato! Eu sou obrigado a voltar a usar o dataset sem o Styler... Isso para mim deixou o Seaborn uma bibliotce menos interessante... Ou eu estou fazendo alguma coisa muito errada!!!???

1 resposta

Olá, Luiz Carlos!

Tudo bem?

A abordagem para utilizar essa formatação no Seaborn é um pouco diferente, mas que vale muito a pena aprender e dar uma nova cara aos seus gráficos. Para conseguirmos formatar os eixos X ou Y de nosso gráfico nós podemos utilizar o método set_major_formatter e importar o tickerda biblioteca do matplotlib, responsável por configurar a localização e formatação dos intervalos.

A título de exemplo, vamos seguir o Dataframe utilizado no curso Data Visualization: Explorando com Seaborn em que a saída do gorjetas.head() seguiria mais ou menos o formato abaixo:

valor_da_contagorjetasobremesadia_da_semanahora_do_diatotal_de_pessoasporcentagem
016.991.01NãoDomingoJantar26.0
110.341.66NãoDomingoJantar316.0
221.013.50NãoDomingoJantar317.0
323.683.31NãoDomingoJantar214.0
424.593.61NãoDomingoJantar415.0

 

Agora, nós fazemos a importação do ticker, fazemos o query dos dados do valor da conta do tipo almoço e, na sequência, transformamos nossos dados na formatação desejada. No exemplo do código mais abaixo salvamos duas Data Series, uma com os valores do almoço em dólares (almoco_dolar) e outra com os valores do almoço em euros (almoco_euro), levando em consideração os valores das moedas no dia 14/09/2021.

Nesse exemplo, para fins didáticos, nós apenas plotaremos os valores em dólar.

Assim, chamamos o distplot() dos dados tratados em dólar(almoco_dolar) e, por fim, adicionamos a formatação desejada, onde xaxis dita que a alteração é no eixo X, o set_major_formatter recebe o tipo de formatação que queremos, que seria o ticker.StrMethodFormatter("$ {x:.02f}").

Esta formatação, pega os valores do nosso eixo X e aplica a formatação em forma de String onde $ é o símbolo que identifica os valores em dólar e a variável x é o valor. O .02fcoloca os nosso valores no formato de moeda com duas casas decimais.

Logo, o código seguiria o formato:

# Importando o ticker responsável para a formatação das coordenadas x e/ou y
from matplotlib import ticker

# Fazendo uma query para contabilizar os valores da conta do Almoço
almoco = gorjetas.query('hora_do_dia == "Almoço"').valor_da_conta

# Valores de dolar e euro referentes ao dia 14/09/21
dolar_para_real = 5.22
euro_para_real = 6.18

# Transformando os valores das contas do almoço em dolar e euro e passando cada 
# um para uma variável diferente
almoco_dolar = almoco / dolar_para_real
almoco_euro = almoco / euro_para_real

# Plotando a Distribuição de Frequências dos valores da conta em dolares
ax = sns.distplot(almoco_dolar, kde=False)
ax.figure.set_size_inches(12, 6)
ax.set_title('Distribuição de Frequências dos valores da conta em dolares', fontsize=20)
ax.set_xlabel('Valor da Conta (U$)', fontsize=16)
ax.xaxis.set_major_formatter(ticker.StrMethodFormatter("$ {x:.02f}"))
ax

Por fim, aplicando essa alteração, o nosso gráfico ficaria dessa maneira:

 

Gráfico de distribuição de frequências dos valores da conta em dolares do dataset com o eixo X formatado na forma $ x, onde $ representa a moeda dólar e x representa os valores da conta

 

Esperamos ter ajudado com a sua dúvida e qualquer dúvida é só chamar!

Abraços e bons estudos!