image

Access unlimited bootcamps and 650+ courses

50
%OFF
Geovani Santos
Geovani Santos12/02/2025 11:43
Share

🐍 Python para Dados: Analisar Consultorias com Python e Descobrir Insights Valiosos

  • #Python

A análise de dados é uma etapa essencial para entender os padrões e comportamentos em diversos contextos.

Neste artigo, mostrarei como usei Python para descobrir quais são os assuntos mais solicitados nas consultorias jurídicas, utilizando técnicas de processamento de texto e visualizações, como nuvens de palavras.

🤔 Problema:

Embora o sistema permita identificar quais especialidades têm maiores taxas de cancelamento e aceitação, não havia um entendimento claro sobre os principais assuntos ou temas relacionados a essas consultorias. Isso dificultava a análise detalhada e estratégica para melhorar os resultados.

💡Solução:

Implementei uma solução que analisa as descrições das consultorias para identificar e quantificar as palavras-chave mais frequentes. Essa análise é cruzada com a especialidade previamente registrada no sistema para validar a coerência e relevância dos assuntos identificados. A visualização desses dados no dashboard permite que tomadores de decisão compreendam os temas predominantes nas consultorias, otimizando estratégias para reduzir cancelamentos e aumentar a eficiência no atendimento.

1. Por que usei Python para análise de textos em consultorias?

  • Escolhi Python porque, além de ser a linguagem com a qual tenho mais experiência, estava aprofundando meus estudos na área durante minha pós-graduação. Coincidentemente, naquela semana, tive uma aula sobre PLN (Processamento de Linguagem Natural), o que me inspirou a aplicá-lo como solução para o meu problema..
  • Utilizei recursos como NLTK, Pandas e Matplotlib, que tornam o processo de análise mais fácil.

🚀 2. Estrutura do código e Explicação:

🛑OBS: O arquivo CSV deve ser construído como abaixo. coluna [observation], como no exemplo:🛑

image

🛠️ Importação das bibliotecas:

  • pandas: Manipula e analisa dados tabulares, como arquivos CSV.
  • re: Processa texto com expressões regulares para limpeza e formatação.
  • nltk: Fornece ferramentas para processamento de linguagem natural, como tokenização e remoção de stopwords.
  • collections.Counter: Conta a frequência de palavras ou itens em listas.
  • matplotlib.pyplot: Cria gráficos e visualizações.
  • wordcloud: Gera nuvens de palavras com base na frequência de termos.
  • unidecode: Remove acentos e caracteres especiais de strings.
  • tkinter: Cria interfaces gráficas, como janelas para selecionar arquivos.

image

📤Carregamento do arquivo CSV:

Função principal:

  • A função open_file abre uma janela para escolher o arquivo CSV.
  • Se o arquivo for carregado, a coluna observation é usada para análise. Caso contrário, um erro é levantado.
  • Usei a interface gráfica (Tkinter) função (filedialog.askopenfilename) para selecionar o arquivo de entrada.

image

🧹 Limpeza e preparação do texto:

Neste passo, o texto é processado para facilitar a análise. Isso inclui:

  • Converter para minúsculas.
  • Remover acentos, números, pontuações e palavras curtas.
  • Tokenizar o texto em palavras individuais.
  • Filtrar palavras irrelevantes (stopwords).

Função principal:

  • A limpeza e tokenização garantem que apenas palavras relevantes permaneçam para a análise.

image

image

🔢 Contagem das palavras mais frequentes:

Usei a biblioteca collections.Counter para calcular a frequência de cada palavra no texto processado.

Função principal:

  • Identifica os assuntos mais discutidos nas consultorias com base nas palavras mais comuns.

image

image

☁️ Criação da nuvem de palavras com a biblioteca WordCloud.

Criei uma visualização gráfica das palavras mais frequentes para facilitar a interpretação dos resultados.

Função principal:

  • A nuvem de palavras destaca as palavras mais frequentes em tamanhos maiores, proporcionando uma visão intuitiva dos tópicos mais solicitados.

image

🪜 3. Passo a passo para executar o código:

  • Execute o script Python.
  • Escolha o arquivo CSV com as consultorias.
  • O script realizará a limpeza e mostrará as palavras mais frequentes.
  • Visualize os resultados em uma nuvem de palavras.

🧑‍💻 4. Código Completo:

import pandas as pd
import re
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from collections import Counter
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import nltk
from unidecode import unidecode
import tkinter as tk
from tkinter import filedialog


# Função para abrir e carregar um arquivo CSV
def open_file():
  """
  Abre um diálogo para selecionar um arquivo CSV e o carrega em um DataFrame.
  Retorna None se nenhum arquivo for selecionado.
  """
  file_path = filedialog.askopenfilename(title="Selecione o arquivo CSV", filetypes=[("CSV files", "*.csv")])
  return pd.read_csv(file_path, encoding='utf-8') if file_path else None


# Carregar dados
df = open_file()
if df is not None:
  df['observation'] = df['observation'].fillna("Sem texto")
  text = df['observation'].str.cat(sep=' ')
else:
  raise ValueError("Nenhum arquivo carregado ou inválido.")


# Baixar recursos do NLTK
nltk.download('punkt')
nltk.download('stopwords')




# Função para limpar texto
def clean_text(text):
  """
  Realiza a limpeza do texto:
  - Converte para minúsculas
  - Remove acentos, números, pontuação e palavras curtas
  """
  text = text.lower()
  text = unidecode(text)  # Remove acentos de forma mais direta
  text = re.sub(r'\d+', '', text)  # Remove números
  text = re.sub(r'\s+', ' ', text)  # Remove espaços extras
  text = re.sub(r'[^\w\s]', '', text)  # Remove pontuação
  text = re.sub(r'\b\w{1,2}\b', '', text)  # Remove palavras curtas
  return text.strip()


# Limpeza do texto
cleaned_text = clean_text(text)


# Tokenização
words = word_tokenize(cleaned_text)


# Stopwords
stop_words = set(stopwords.words('portuguese'))


# Stopwords personalizadas
custom_stopwords = {
  "gostaria", "texto", "boa", "saber", "anos", "pra",
  "fazer", "tarde", "preciso", "valor", "ola",
  "agora", "porem", "nome", "bom", "quero", "fiz",
  "quer", "dia", "sobre", "casa", "caso"
  "meses", "dias", "noite", "q", "tudo",
  "pois", "tirar", "queria", "sendo", "2",
  "onde", "3", "1", "30", "outra", "4", "ano", "desde",
  "entrei", "7", "hoje", "outra", "4", "ano", "desde",
  "de", "em", "e", "ser", "esta", "vai", "foi", "vai", "esta",
  "sera", "bem", "como", "sim", "nao", "ja", "bem", "vou",
  "mais", "menos", "aqui", "ali", "la", "vem", "vai", "da", "do",
  "meu", "minha", "seu", "sua", "com", "para", "por", "se",
  "ele", "ela", "eles", "elas", "ta", "ok", "ok", "ate",
  "nunca", "sempre", "vez", "vezes", "tambem", "quase", "perto",
  "15", "20", "5", "10", "oi", "ola", "ai", "entao", "todos",
  "coisa", "fazendo", "parte", "comigo", "ficar", "veio", "ficou", 
  "faz", "ainda", "bem", "assim", "ola", "oi", "problemas",
  "pediu", "pedi", "consigo", "pode", "fiz", "faco", "ajuda",
  "quero", "querendo", "sei", "poderia", "porque", "mim", "posso",
  "nada", "mes", "ter", "algumas", "fez", "nada", "alguns", "deu",
  "pessoa", "apos", "paga", "feito", "consegui", "dr", "reais",
  "moro", "tempo", "quais", "loja", "querem", "disse", "apos", "entrar",
  "chamo", "sair", "pedir", "outro", "carteira", "obrigada", "apenas",
  "ex", "nao", "dois", "dona", "antes", "todo", "6", "atras", "certo",
  "total", "ja", "so", "ate", "ha", "contato"
}


# Combinar stopwords padrão com personalizadas
stop_words.update(custom_stopwords)


# Filtrar palavras indesejadas
words = [word for word in words if word not in stop_words]


# Contagem de palavras
word_counts = Counter(words)


# Exibir as 50 palavras mais comuns
most_common_words = word_counts.most_common(50)
print(most_common_words)


# Gerar nuvem de palavras
wordcloud = WordCloud(width=800, height=400, background_color='white').generate_from_frequencies(word_counts)


# Exibir nuvem de palavras
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()


Conclusão:

Com base nas informações coletadas e analisadas em nosso dashboard, descobrimos que Direito Trabalhista e Direito da Família são as consultorias com maior número de solicitações.

image

Quantidade de palavras encontrada:

empresa: 1422, pensao: 979, trabalho: 925, processo: 848, contrato: 828, pai: 820, pagar: 803, meses: 758, filho: 732, direito: 663, mae: 658, conta: 647, caso: 575, filha: 567, dinheiro: 561, carro: 559, duvida: 490, advogado: 456, duvidas: 394, recebi: 382, marido: 382, problema: 358, direitos: 356, paguei: 353, guarda: 350, acordo: 346, imovel: 346, banco: 345, divida: 329, pagamento: 327, estao: 325, filhos: 323, alimenticia: 308, aluguel: 300, moto: 300, compra: 297, contra: 296, receber: 293, preso: 276, comprei: 269, salario: 248, devo: 241, servico: 239, orientacao: 232, situacao: 228, trabalhei: 226, justica: 221, terreno: 221, trabalhar: 216, causa: 216

Referências:

NLTK

Pandas

Matplotlib

Tkinter

Share
Comments (2)
Geovani Santos
Geovani Santos - 12/02/2025 16:32

Infelizmente ainda não tive a oportunidade, acabei pensando na dor da empresa e foi devido a isso que criei esse algoritmo e algumas outras também, mas é uma ideia muito interessante. :)

DIO Community
DIO Community - 12/02/2025 16:21

Parabéns, Geovani!! A análise de dados com Python aplicada a consultorias jurídicas é um ótimo exemplo de como a tecnologia pode otimizar a tomada de decisão. O uso de Processamento de Linguagem Natural para identificar padrões e os temas mais recorrentes nas solicitações permite uma visão estratégica essencial para melhorar o atendimento e a eficiência operacional. A criação de nuvens de palavras torna os insights ainda mais acessíveis, facilitando a interpretação dos dados pelos tomadores de decisão.

A forma como você estruturou o código, combinando bibliotecas como Pandas, NLTK e WordCloud, mostra um fluxo bem definido de coleta, limpeza e visualização de informações. Além disso, a inclusão de uma interface gráfica com Tkinter para seleção de arquivos é um detalhe interessante para tornar o processo mais intuitivo. Esses recursos fazem com que Python seja uma ferramenta poderosa para análise de grandes volumes de texto, transformando dados dispersos em conhecimento acionável.

Na DIO, acreditamos que o domínio dessas técnicas pode abrir portas para novas oportunidades na área de tecnologia e análise de dados. Você já pensou em aplicar esse tipo de análise em outras áreas, como atendimento ao cliente ou marketing digital?