Escolar Documentos
Profissional Documentos
Cultura Documentos
(Parte 1)
ANÁLISE EXPLORATÓRIA DE 1ª CATEGORIA
(PARTE 1)
Nesta semana, trouxemos um material top para dar aquele upgrade no seu portfólio! É
hora de elevar suas habilidades em análises exploratórias no Python, de sair do básico e
realmente chamar a atenção do recrutador, vamos aprender a caprichar de verdade nos
gráficos! Afinal, tá na hora de usar todas as armas para chamar a atenção do recrutador,
né?
Desta vez, a gente vai muito além dos gráficos simples do Matplotlib e Seaborn. Hoje,
você vai mergulhar em detalhes que fazem a diferença. Prepare-se para adicionar textos,
caixas de mensagens, dentre outros detalhes nos seus gráficos. É hora de subir o nível
mais uma vez, bora!
Os dados dizem respeito a gastos com planos de saúde e podem ser baixados aqui.
Veja que dataset interessante para seu portfólio, ele possui diversas informações a
respeito da pessoa, sua idade, sexo, IMC, quantos filhos possui, se é fumante, a região
em que vive e os custos com plano de saúde.
Não faltam apenas detalhes no título e nos rótulos, mas também faltam coisas que
podem ajudar a interpretação, como caixas de mensagens, variação nas cores, além de
criatividade mesmo, designs diferentes. O material de hoje será focado em levar vocë
um pouco além na análise exploratória, vamos aprender a trabalhar melhor esses
detalhes!
Pela primeira vez, eu acho que o código ficou um pouco menos intuitivo, por conta do
gca(). Esta é a abreviação de get current axes e precisa ser utilizada para mexer nos
"spines", os contornos do quadro
Eu acredito que existe um jeito mais intuitivo, de modo geral, mas que pode causar uma
pequena confusão na sua mente no começo, por conta da mudança no núcleo da sintaxe.
O que pode causar estranheza é que além de mudar alguns comandos, como de title para
set_title, estamos ainda utilizando o subplot() para a construção de um único gráfico.
Afinal, por que usar subplot se não há SUB-plots?
A questão é que o uso de subplot abre espaço para o uso de fig e ax, o que facilita
bastante na manutenção dos detalhes da imagem. No exemplo dado, fig e ax são
variáveis que representam o objeto da figura e o objeto do eixo, respectivamente,
criados usando a função subplots(). A figura (fig) é o objeto que representa a área em
branco onde o gráfico será desenhado. Ela pode conter um ou mais eixos (ax). O eixo
(ax) é onde os elementos do gráfico, como barras, linhas, pontos, entre outros, são
plotados. Ao criar a figura e o eixo usando 'fig, ax = plt.subplots(figsize=(8, 6))',
estamos atribuindo o objeto da figura à variável fig e o objeto do eixo à variável ax.
Em resumo, fig é a figura que contém o gráfico e ax é o eixo em que o gráfico é plotado.
Eles fornecem uma estrutura organizada para a criação e configuração de gráficos.
Aliás, você notou que parece existir uma correlação, ainda que fraca, entre idade e
cobrança? Parece que temos 3 retas ascendentes. Vale dar uma investigada no futuro!
Bom, antes de avançar, que tal você testar seus conhecimentos? Não tem nenhuma
análise exploratória sua que valeria a
Eu aposto que tem, vale dar uma pausa e já fazer uns testes, aproveitando para reforçar
o que foi aprendido!
Você poderia fazer isso com o matplotlib, usando o bar plot. Entretanto, para
ampliarmos mais o número de ferramentas que você conhece, vou utilizar a estratégia
para plotar gráfico com o Pandas!
Desafio 1: Construa estes mesmos gráficos, mas com o Matplotlib, ao invés do Pandas.
Neste caso, muda um pouco, pois a posição do eixo (ax) será passada como um
parâmetro da função que você está usando para traçar o gráfico.
Desafio 3: Que tal escrever um tutorial explicando detalhadamente cada parâmetro do
Matplotlib ou do Seaborn? Não é todo mundo que sabe tantos detalhes!
Certo, agora já sabemos fazer gráficos com o máximo de detalhes, mexendo nos textos,
nas cores e até mesmo nas linhas do "quadro" (local do plot) dele. Mas alguns truques
ficaram de fora e eu vou mostrar agora:
Outros estilos populares que você pode testar: fivethirtyeight, dark_background, classic.
Por exemplo, se você quiser definir o tamanho padrão para todos os seus gráficos:
Neste exemplo, o tamanho padrão para todos os gráficos será 10 x 5 (largura x altura).
Para ver todas as opções disponíveis, você pode printar o dicionário rcParams:
Lembre-se de que as alterações feitas ao rcParams são globais e afetarão todos os
gráficos criados após sua execução. Se você quiser alterar as propriedades apenas para
um gráfico específico, faça isso localmente, ajustando as propriedades do objeto de
gráfico individual.
Nossa, já sabemos MUITA coisa de Matplotlib! Mas tem algo bem simples faltando,
você chegou a notar? Você reparou que nossos gráficos não possuem o valor em cima
das barras, ou em qualquer lugar que seja dentro deles?
Colocar rótulos nos gráficos não é tão simples no começo, nem parece muito intuitivo.
Mesmo assim, eu garanto que fica fácil com a prática. Tudo o que você precisa entender
é que o Matplotlib usa o plt.text() para adicionar textos, mas que você precisa dar a
exata localização de onde o texto deve ser incluído.
Veja, o plt.text() é capaz de criar o texto que você quiser na posição que você der:
Veja que nós passamos os valores indicando a posição onde o texto deveria começar,
sendo 5 no eixo x e 2 no eixo y. Além disso, passamos o texto a ser escrito e o tamanho
da letra.
É isso o que espanta as pessoas, ter que ficar localizando onde colocar os textos. Afinal,
diferente de outros softwares, nós precisaremos determinar exatamente onde os rótulos
dos valores devem ficar.
Por outro lado, você vai ver que, como tudo no Python, estes textos são bem
customizáveis! Veja um exemplo dado no site do próprio Matplotlib:
Vamos ver na prática como funcionaria colocar os rótulos de valores nos nossos
gráficos:
Correndo o risco de ficar redundante, vamos explicar passo a passo do que foi feito,
porque quero garantir o entendimento do matplotlib, então você vai poder voltar a este
material quantas vezes forem necessárias:
3. Definimos a lista region_names com os nomes das regiões existentes. Esses nomes
devem corresponder aos valores únicos da coluna region no DataFrame insurance.
4. Definimos a lista colors com as cores personalizadas que serão atribuídas a cada barra
no gráfico de barras. Cada cor da lista colors deve corresponder a uma região específica.
6. Usamos o método bar() no eixo ax para plotar o gráfico de barras. Passamos a lista
region_names como os valores do eixo x e os valores da contagem region_types.values
como os valores do eixo y. Também passamos a lista colors como o parâmetro color
para atribuir cores personalizadas a cada barra.
7. Configuramos os rótulos dos eixos usando os métodos set_xlabel() e set_ylabel() no
eixo ax, e definimos o título do gráfico usando o método set_title().
Ou seja, nosso texto será colocado primeiro na posição 0 do eixo x e na posição 364 do
eixo y. Já o segundo texto, será colocado na posição 1 no eixo-x e na posição 325 do
eixo-y. O eixo-x é o eixo na horizontal, enquanto o eixo-y é a altura.
Veja que esta função é a mesma que demonstrei lá em cima no plt.text(), ela está
recebendo a posição no eixo x, a posição no eixo y e o texto a ser inserido. Ou seja,
quando i for 0 e v for 364, que é o caso da primeira iteração do loop, nós teremos
basicamente a função abaixo:
Reforçando mais uma vez: Passamos para a posição x, o valor de i; para a posição y,
que é a altura, passamos o valor v; e o texto a ser inserido será o valor de v convertido
para uma string, str(v). Esses são os principais parâmetros de text(). Além deles,
definimos ha='center' para alinhar o texto horizontalmente no centro da barra e
va='bottom' para alinhar o texto verticalmente na parte inferior da barra.
O parâmetro bbox (bounding box) é usado para definir as propriedades de uma caixa
que envolve o texto. É uma forma de delimitar a área da caixa que será exibida.
- edgecolor: Define a cor da borda da caixa. none significa que não há borda. Podem ser
utilizados nomes de cores ou códigos hexadecimais para especificar uma cor. Neste
exemplo, definimos como none.
- boxstyle: Define o estilo da caixa. round especifica que as bordas da caixa são
arredondadas. Outros estilos disponíveis incluem square, round4, larrow, rarrow,
roundtooth, entre outros.
Além das propriedades do bbox, também é possível definir outras configurações para o
texto, como:
- color: Define a cor do texto. Neste exemplo, definimos como black, que é preto.
- fontsize: Define o tamanho da fonte do texto. Neste exemplo, definimos como 11.
Você deve estar pensando neste momento "Nossa, é muita coisa". Assim, é e não é.
Explico: sim, é muito conteúdo. Mas vale lembrar: olha o tanto de coisa que você sabe
hoje que lá atrás nem teria ideia de que saberia na ponta da língua, pd.read_csv,
df.info(), plot, import as, e por aí vai! No começo, sempre parece muita coisa, mas eu
posso te assegurar que é tranquilo e que fica mais fácil ainda quando você pode pedir
ajuda no Google ou no ChatGPT para te relembrar do que está faltando! Fique
tranquilo, você vai pegar o jeito!
Agora, que tal dar uma revisada nas suas análises exploratórias do passado e incluir
alguns detalhes? Ou repassar o conhecimento fazendo algum tutorial no Medium ou um
post rápido no Linkedin! Vai lá interagir na comunidade e ganhar seu espaço!