- Abra este link
- Abra um novo notebook no Google Colab
- Copie e rode este comando:
!pip install --upgrade gspread gspread_dataframe
- Após isso, copie e rode este comando:
# Importar bibliotecas
import pandas as pd
import gspread
from google.colab import auth
from gspread_dataframe import get_as_dataframe
from google.auth import default
# Autenticação
auth.authenticate_user()
creds, _ = default()
gc = gspread.authorize(creds)
# Abre a planilha
url = "https://docs.google.com/spreadsheets/d/1Y2eIBpUUlrdkqwHobCMS1YqVp93HhWIAgJQKmCzIHuw/edit?gid=182058863#gid=182058863"
spreadsheet = gc.open_by_url(url)
# Abas
worksheet_clientes = spreadsheet.worksheet("Clientes")
worksheet_vendas = spreadsheet.worksheet("Vendas")
# Converte para DataFrame
df_clientes = get_as_dataframe(worksheet_clientes).dropna(how='all')
df_vendas = get_as_dataframe(worksheet_vendas).dropna(how='all')
# Transforme os DataFrames em listas de dicionários para usar com for
clientes = df_clientes.to_dict(orient='records')
vendas = df_vendas.to_dict(orient='records')
- Ele deve pedir as permissões necessárias para se conectar com a planilha, acompanhe as instruções nos slides para isso
- Pronto, você está agora conectado!
A seguir temos o enunciado e o código para facilitar a cópia.
codigo_cliente = input("Digite o código do cliente (ex: CLI001): ")
print(f"Vendas do cliente {codigo_cliente}:")
for venda in vendas:
if venda['Código do Cliente'] == codigo_cliente:
print(f" - {venda['Item Vendido']}: R$ {venda['Valor da Venda']} | Pago: {venda['Se o valor foi pago']}")
total_nao_recebido = 0
for venda in vendas:
if not venda['Se o valor foi pago']:
total_nao_recebido += float(venda['Valor da Venda'])
print("Total de vendas sem receber: R$", total_nao_recebido)
maior_valor = 0
codigo_maior = ""
for venda in vendas:
valor = float(venda['Valor da Venda'])
if valor > maior_valor:
maior_valor = valor
codigo_maior = venda['Código do Cliente']
# Busca dados do cliente com esse código
for cliente in clientes:
if cliente['Código do Cliente'] == codigo_maior:
print("Cliente que fez a maior compra única:")
print(f"Nome: {cliente['Nome do Cliente']}")
print(f"Cidade: {cliente['Cidade']}")
print(f"Valor da compra: R$ {maior_valor}")
break
# Cria um dicionário para acumular valores por cliente
total_por_cliente = {}
for venda in vendas:
codigo = venda['Código do Cliente']
valor = float(venda['Valor da Venda'])
if codigo not in total_por_cliente:
total_por_cliente[codigo] = valor
else:
total_por_cliente[codigo] += valor
# Ordena por maior valor
clientes_ordenados = sorted(total_por_cliente.items(), key=lambda x: x[1], reverse=True)
print("Top clientes por valor total de compras:")
for codigo, total in clientes_ordenados[:10]:
# Busca nome do cliente na outra tabela
nome = next((c['Nome do Cliente'] for c in clientes if c['Código do Cliente'] == codigo), 'Desconhecido')
print(f"{nome} ({codigo}) → R$ {total:.2f}")
# Cria um dicionário para acumular valores por estado
vendas_por_estado = {}
for venda in vendas:
codigo = venda['Código do Cliente']
valor = float(venda['Valor da Venda'])
# Busca o estado do cliente
estado = next((c['Estado'] for c in clientes if c['Código do Cliente'] == codigo), None)
if estado:
if estado not in vendas_por_estado:
vendas_por_estado[estado] = valor
else:
vendas_por_estado[estado] += valor
# Ordena os estados por valor de vendas
estados_ordenados = sorted(vendas_por_estado.items(), key=lambda x: x[1], reverse=True)
print("Estados com maior volume de vendas:")
for estado, total in estados_ordenados:
print(f"{estado} → R$ {total:.2f}")
nao_pagos = {}
for venda in vendas:
if not venda['Se o valor foi pago']:
codigo = venda['Código do Cliente']
valor = float(venda['Valor da Venda'])
if codigo not in nao_pagos:
nao_pagos[codigo] = valor
else:
nao_pagos[codigo] += valor
for codigo, total in nao_pagos.items():
nome = next((c['Nome do Cliente'] for c in clientes if c['Código do Cliente'] == codigo), 'Desconhecido')
print(f"{nome} ({codigo}) → R$ {total:.2f}")
vendas_por_cidade = {}
for venda in vendas:
codigo = venda['Código do Cliente']
cidade = next((c['Cidade'] for c in clientes if c['Código do Cliente'] == codigo), None)
if cidade:
vendas_por_cidade[cidade] = vendas_por_cidade.get(cidade, 0) + 1
for cidade, total in vendas_por_cidade.items():
print(f"{cidade} → {total} vendas")
compras = {}
for venda in vendas:
codigo = venda['Código do Cliente']
compras[codigo] = compras.get(codigo, 0) + 1
for codigo, qtd in compras.items():
if qtd > 5:
nome = next((c['Nome do Cliente'] for c in clientes if c['Código do Cliente'] == codigo), 'Desconhecido')
print(f"{nome} ({codigo}) → {qtd} compras")
clientes_por_estado = {}
for cliente in clientes:
estado = cliente['Estado']
clientes_por_estado[estado] = clientes_por_estado.get(estado, 0) + 1
for estado, total in clientes_por_estado.items():
print(f"{estado} → {total} clientes")
soma = 0
qtd = 0
for venda in vendas:
soma += float(venda['Valor da Venda'])
qtd += 1
media = soma / qtd if qtd > 0 else 0
print("Média por venda: R$", round(media, 2))
pagas = 0
nao_pagas = 0
for venda in vendas:
if venda['Se o valor foi pago']:
pagas += 1
else:
nao_pagas += 1
print("Pagas:", pagas)
print("Não pagas:", nao_pagas)
clientes_com_venda = set(venda['Código do Cliente'] for venda in vendas)
for cliente in clientes:
if cliente['Código do Cliente'] not in clientes_com_venda:
print(f"{cliente['Nome do Cliente']} ({cliente['Código do Cliente']}) nunca comprou.")
vendas_por_item = {}
for venda in vendas:
item = venda['Item Vendido']
valor = float(venda['Valor da Venda'])
vendas_por_item[item] = vendas_por_item.get(item, 0) + valor
for item, total in vendas_por_item.items():
print(f"{item} → R$ {total:.2f}")
vendas_estado = {}
for venda in vendas:
codigo = venda['Código do Cliente']
estado = next((c['Estado'] for c in clientes if c['Código do Cliente'] == codigo), None)
if estado:
vendas_estado[estado] = vendas_estado.get(estado, 0) + 1
estado_top = max(vendas_estado.items(), key=lambda x: x[1])[0]
print(f"Estado com mais vendas: {estado_top}")
print("Clientes desse estado:")
for cliente in clientes:
if cliente['Estado'] == estado_top:
print(f"{cliente['Nome do Cliente']} ({cliente['Código do Cliente']})")
totais = {}
quantidades = {}
for venda in vendas:
codigo = venda['Código do Cliente']
valor = float(venda['Valor da Venda'])
totais[codigo] = totais.get(codigo, 0) + valor
quantidades[codigo] = quantidades.get(codigo, 0) + 1
medias = [(codigo, totais[codigo]/quantidades[codigo]) for codigo in totais]
medias.sort(key=lambda x: x[1], reverse=True)
print("Top clientes por média de valor por compra:")
for codigo, media in medias[:10]:
nome = next((c['Nome do Cliente'] for c in clientes if c['Código do Cliente'] == codigo), 'Desconhecido')
print(f"{nome} ({codigo}) → Média: R$ {media:.2f}")