Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Mão na massa: Zoop Pay

Aula 01 - Conhecendo os dados

import pandas as pd

# Leitura das bases via URL
clientes = pd.read_csv(url_clientes)
vendas = pd.read_csv(url_vendas)
clientes_zoop = pd.read_csv(url_zoop_pay)

# Tratamento da coluna de data
vendas['data'] = pd.to_datetime(vendas['data'])

# União de clientes e vendas
df = pd.merge(
    vendas,
    clientes,
    on='ID_compra',
    how='inner'
)

# União com clientes Zoop Pay
df = pd.merge(
    df,
    clientes_zoop,
    on='ID_cliente',
    how='left'
)

# Organização das colunas
df = df[
    [
        'ID_compra',
        'data',
        'horario',
        'categoria',
        'preco_unitario',
        'quantidade',
        'frete',
        'metodo_pagamento',
        'ID_cliente',
        'idade',
        'sexo_biologico',
        'cidade',
        'uf',
        'regiao',
        'cashback',
        'avaliacao_compra'
    ]
]

df.head()

Aula 02 - Visualizando os dados

compras_regiao = df['regiao'].value_counts()

compras_regiao.plot(
    kind='bar',
    title='Quantidade de compras por região'
)
df['faturamento'] = df['preco_unitario'] * df['quantidade']

faturamento_regiao = df.groupby('regiao')['faturamento'].sum()

faturamento_regiao.plot(
    kind='bar',
    title='Faturamento por região'
)

Aula 03 - Gerando mais visuais

df['idade'].plot(
    kind='hist',
    bins=20,
    title='Distribuição de idade dos clientes'
)
df['sexo_biologico'].value_counts().plot(
    kind='bar',
    title='Distribuição por sexo biológico'
)

Aula 04 - Técnicas de storytelling

import matplotlib.pyplot as plt

# Contagem de compras por região
compras_regiao = df['regiao'].value_counts()

ax = compras_regiao.plot(
    kind='bar',
    color=AZUL_1,
    figsize=(8, 5),
    title='Quantidade de compras por região'
)

# Adicionando os valores em cima das barras
for i, valor in enumerate(compras_regiao):
    ax.text(i, valor, valor, ha='center', va='bottom')

# Linha da média
media = compras_regiao.mean()
ax.axhline(
    y=media,
    linestyle='--',
    label='Média de compras'
)

ax.legend()

plt.show()
import matplotlib.pyplot as plt

# Criação da coluna de faturamento
df['faturamento'] = df['preco_unitario'] * df['quantidade']

# Faturamento por região
faturamento_regiao = df.groupby('regiao')['faturamento'].sum()

ax = faturamento_regiao.plot(
    kind='bar',
    color=VERMELHO_2,
    figsize=(8, 5),
    title='Faturamento por região'
)

# Valores sobre as barras
for i, valor in enumerate(faturamento_regiao):
    ax.text(i, valor, f'{valor:,.0f}', ha='center', va='bottom')

# Linha da média
media = faturamento_regiao.mean()
ax.axhline(
    y=media,
    linestyle='--',
    label='Média de faturamento'
)

ax.legend()

plt.show()
import matplotlib.pyplot as plt

ax = df['idade'].plot(
    kind='hist',
    bins=20,
    color=AQUA_2,
    figsize=(8, 5),
    title='Distribuição de idade dos clientes'
)

# Cálculo da média de idade
media_idade = df['idade'].mean()

# Linha vertical da média
ax.axvline(
    x=media_idade,
    linestyle='--',
    label=f'Média de idade: {media_idade:.1f}'
)

ax.legend()

plt.show()
import matplotlib.pyplot as plt

ax = df['idade'].plot(
    kind='hist',
    bins=20,
    figsize=(8, 5),
    title='Distribuição de idade dos clientes'
)

# Média e mediana
media_idade = df['idade'].mean()
mediana_idade = df['idade'].median()

# Linhas de referência
ax.axvline(
    media_idade,
    linestyle='--',
    label=f'Média: {media_idade:.1f}'
)

ax.axvline(
    mediana_idade,
    linestyle=':',
    label=f'Mediana: {mediana_idade:.1f}'
)

ax.grid(axis='y', alpha=0.3)
ax.legend()

plt.show()
import matplotlib.pyplot as plt

sexo_counts = df['sexo_biologico'].value_counts()
total = sexo_counts.sum()

ax = sexo_counts.plot(
    kind='bar',
    figsize=(8, 5),
    title='Distribuição por sexo biológico'
)

# Valores e percentuais sobre as barras
for i, valor in enumerate(sexo_counts):
    percentual = (valor / total) * 100
    ax.text(
        i,
        valor,
        f'{valor}\n({percentual:.1f}%)',
        ha='center',
        va='bottom'
    )

ax.grid(axis='y', alpha=0.3)

plt.show()
2 respostas
solução!

Olá, John Lenon! Como vai?

Gostei demais da forma como organizou as atividades das aulas!

Sua solução mostra organização clara na manipulação dos dados, atenção aos detalhes ao preparar as colunas e aplicar merges, além de criatividade na visualização com gráficos que tornam os resultados mais compreensíveis.

Uma sugestão para o futuro seria explorar gráficos mais avançados, como boxplots ou heatmaps, para identificar padrões e correlações adicionais nos dados.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Olá! Tudo bem?

Muito obrigado pelo feedback tão positivo! Fico realmente contente em saber que a organização das atividades, o cuidado com os dados e as visualizações ficaram claras e úteis.

A sugestão de explorar boxplots e heatmaps é excelente — com certeza vou aplicá-la nas próximas análises para aprofundar a identificação de padrões e correlações.