Projeto de Dados com Python – Código Completo
Neste artigo vamos apresentar um projeto de clusterização em Python. O conteúdo é acessível, com código comentado e visualizações claras, ideal para iniciantes e entusiastas de ciência de dados. O objetivo é segmentar clientes com base em sua renda anual e padrão de gastos, usando o algoritmo K-Means.
O que você vai ver aqui?
Para fazer o download dos arquivos utilizados na aula, preencha com o seu e-mail:
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
O que é clusterização e por que usá-la?
O que significa clusterização?
Clusterização é um processo de aprendizado não supervisionado que divide uma base de dados em grupos (clusters) com características semelhantes, sem a necessidade de um gabarito ou respostas predefinidas. No caso deste projeto, usaremos a clusterização para segmentar clientes de um shopping com base em sua renda anual e uma pontuação de gastos (de 1 a 100), que reflete o quanto gastaram no shopping.
Por que usar clusterização?
Essa técnica é útil para identificar padrões em dados, como:
- Segmentar clientes para campanhas de marketing personalizadas.
- Agrupar produtos por similaridade.
- Detectar comportamentos ou tendências em grandes bases de dados.

Entendendo a base de dados
O que contém a base de dados?
A base de dados utilizada, obtida do Kaggle, inclui informações de clientes de um shopping center, como:
- ID do cliente: Identificador único.
- Gênero: Masculino ou feminino.
- Idade: Faixa etária do cliente.
- Renda anual: Valor em milhares de dólares.
- Pontuação de gastos (Spending Score): Uma nota de 1 a 100 baseada no histórico de compras.
Para este projeto, focaremos apenas na renda anual e na pontuação de gastos, criando uma clusterização bivariada (com duas variáveis).
| Coluna | Descrição | Tipo de Dado |
|---|---|---|
| ID do Cliente | Identificador único | Numérico |
| Gênero | Masculino ou Feminino | Categórico |
| Idade | Idade do cliente | Numérico |
| Renda Anual | Renda em milhares de dólares | Numérico |
| Spending Score | Pontuação de gastos (1 a 100) | Numérico |

Etapas do projeto de clusterização
1. Importando os dados com Pandas
Como importar a base de dados?
O primeiro passo é carregar os dados em Python usando a biblioteca Pandas, que facilita o trabalho com tabelas. O arquivo CSV (mall_customers.csv) será lido e transformado em um DataFrame.
import pandas as pd
# Importando a base de dados
tabela = pd.read_csv('mall_customers.csv')
# Visualizando a tabela
display(tabela)Dica: Se você não esta familiarizado com o Pandas, veja nosso guia que ensina tudo do zero!
Este código carrega a base de dados e exibe as primeiras linhas para verificar se a importação foi bem-sucedida.
2. Selecionando colunas para clusterização
Quais colunas usar?
Para a clusterização, selecionaremos apenas as colunas renda anual (Annual Income) e pontuação de gastos (Spending Score). Isso simplifica o projeto e foca nas variáveis mais relevantes para segmentação.
# Definindo as colunas para clusterização
colunas_cluster = ['Annual Income (k$)', 'Spending Score (1-100)']
# Criando uma cópia da tabela com as colunas selecionadas
tabela_cluster = tabela[colunas_cluster].copy()
# Visualizando a nova tabela
display(tabela_cluster)Por que usar .copy()?
O método .copy() evita problemas de referência no Pandas, garantindo que alterações na nova tabela não afetem a original.
3. Normalizando os dados com Scikit-learn
Por que normalizar os dados?
O algoritmo K-Means calcula distâncias entre pontos para formar clusters. Se as variáveis têm escalas diferentes (ex.: renda anual vai até 137 mil, enquanto o spending score vai até 100), a variável com maior escala pode dominar a clusterização. A normalização ajusta todas as variáveis para a mesma escala (geralmente entre 0 e 1).
from sklearn.preprocessing import StandardScaler
# Criando o normalizador
normalizador = StandardScaler()
# Normalizando os dados
tabela_cluster = normalizador.fit_transform(tabela_cluster)
# Convertendo de volta para DataFrame
tabela_cluster = pd.DataFrame(tabela_cluster, columns=colunas_cluster)
# Visualizando os dados normalizados
display(tabela_cluster)4. Aplicando o algoritmo K-Means
Como o K-Means funciona?
O K-Means agrupa os dados calculando a distância entre pontos e atribuindo cada ponto ao cluster mais próximo. Ele tenta minimizar a distância dentro de cada cluster, criando grupos coesos. Para este projeto, escolhemos criar cinco clusters, mas o número ideal pode variar.
Como escolher o número de clusters?
Existem duas abordagens:
- Qualitativa: Escolher com base em objetivos práticos, como segmentar clientes para campanhas de marketing.
- Quantitativa: Usar métricas como a inércia para avaliar o impacto de adicionar mais clusters. A inércia mede a soma das distâncias dos pontos aos centros dos clusters. Quando adicionar clusters deixa de reduzir significativamente a inércia, você encontrou um número ideal.
from sklearn.cluster import KMeans
# Criando o modelo K-Means com 5 clusters
modelo = KMeans(n_clusters=5)
# Aplicando o modelo aos dados normalizados
modelo.fit(tabela_cluster)
# Adicionando os clusters à tabela
tabela_cluster['Cluster'] = modelo.labels_
# Visualizando a tabela com os clusters
display(tabela_cluster)5. Visualizando os clusters com Plotly
Como visualizar os resultados?
Para entender se a clusterização foi eficaz, criaremos um gráfico de dispersão (scatter plot) usando a biblioteca Plotly Express. Cada cluster será representado por uma cor diferente.
import plotly.express as px
# Criando o gráfico de dispersão
grafico = px.scatter(tabela_cluster,
x='Annual Income (k$)',
y='Spending Score (1-100)',
color='Cluster')
# Exibindo o gráfico
grafico.show()Este gráfico mostra os clientes segmentados em cinco grupos, baseados em renda e gastos. Cada cluster representa um comportamento diferente, como:
- Renda alta, gastos altos: Clientes que ganham e gastam muito.
- Renda alta, gastos baixos: Clientes econômicos com alta renda.
- Renda média, gastos médios: Clientes com comportamento padrão.
- Renda baixa, gastos altos: Clientes que gastam além da renda.
- Renda baixa, gastos baixos: Clientes com orçamento restrito.
Conclusão: O que aprendemos e próximos passos
O que este projeto nos ensina?
Este projeto demonstra como aplicar a clusterização com Python, desde a importação de dados até a visualização dos resultados. Usamos:
- Pandas para manipulação de dados.
- Scikit-learn para normalização e aplicação do K-Means.
- Plotly Express para visualização interativa.
Quais são os próximos passos?
- Adicionar mais variáveis: Inclua idade ou gênero (após codificação numérica) para uma clusterização mais robusta.
- Testar diferentes números de clusters: Use a métrica de inércia para encontrar o número ideal de clusters.
- Aplicar em outros contextos: Experimente clusterizar outros tipos de dados, como produtos ou usuários de redes sociais.
Com este projeto, você tem uma base sólida para explorar a clusterização e aplicá-la em problemas reais de ciência de dados.
Acompanhe nossos posts semanais sobre Python, com mais dicas e guias como este!
Hashtag Treinamentos
Para acessar outras publicações de Python, clique aqui!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








