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