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.

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.
Um gráfico ilustrando grupos de clientes em um scatter plot, com cores diferentes para cada cluster.

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).

ColunaDescriçãoTipo de Dado
ID do ClienteIdentificador únicoNumérico
GêneroMasculino ou FemininoCategórico
IdadeIdade do clienteNumérico
Renda AnualRenda em milhares de dólaresNumérico
Spending ScorePontuação de gastos (1 a 100)Numérico
Uma captura da tabela de dados bruta, mostrando as primeiras linhas no formato CSV ou DataFrame.

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.

Python
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.

Codigo
# 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.

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

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).

Python
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.
Python
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.

Python
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!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos