Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Etapa 4 Desafio 1 y 2

Proyecto Desafío 1: Ventas Online

En la columna Fecha de venta tenemos fechas en el formato 'día/mes/año' (dd/mm/AAAA). Transforme estos datos al tipo datetime y busque una forma de visualización de subconjunto que pueda contribuir al objetivo del contexto en el que se insertan los datos.

El objetivo de este proyecto es analizar los resultados de un evento con los clientes de una empresa de venta online. Se recopiló un conjunto de datos que contiene los clientes que gastaron más en productos dentro de los 5 días posteriores a la venta, que es la duración del evento. Este análisis identificará al cliente con la mayor compra esa semana, quien recibirá un premio de la tienda, y posteriormente, puede ayudar a la empresa a crear nuevas estrategias para atraer más clientes.

import pandas as pd
import json
import re
import matplotlib.pyplot as plt

with open('/content/dados_vendas_clientes.json', 'r', encoding='utf-8') as f:
    dados = json.load(f)

df = pd.DataFrame(dados['dados_vendas'])

print("DataFrame original:")
display(df)

df = df.explode(['Cliente', 'Valor da compra']).reset_index(drop=True)

print("DataFrame normalizado:")
display(df.head())

df['Data de venda'] = pd.to_datetime(df['Data de venda'], format='%d/%m/%Y')

print("Tipo de dato fecha:")
print(df['Data de venda'].dtype)

def limpiar_nombre(nombre):
    nombre = nombre.lower()
    nombre = re.sub(r'[^a-záéíóúñ\s]', '', nombre)
    nombre = re.sub(r'\s+', ' ', nombre)
    return nombre.strip()

df['Cliente'] = df['Cliente'].apply(limpiar_nombre)

print("Clientes limpios:")
display(df[['Cliente']].drop_duplicates())

df['Valor da compra'] = (
    df['Valor da compra']
    .str.replace('R$', '', regex=False)
    .str.replace(',', '.', regex=False)
    .str.strip()
    .astype(float)
)

print("Tipo de dato Valor da compra:")
print(df['Valor da compra'].dtype)

total_por_cliente = (
    df.groupby('Cliente')['Valor da compra']
    .sum()
    .sort_values(ascending=False)
)

print("\nTotal gastado por cliente durante el evento:")
display(total_por_cliente)

cliente_ganador = total_por_cliente.idxmax()
monto_ganador = total_por_cliente.max()

print("Cliente ganador del evento:")
print(cliente_ganador)

print("Total gastado:")
print(round(monto_ganador, 2))

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Proyecto Desafío 2: Administración de Condominios

Al igual que en el Proyecto Desafío 1, trabajamos con todas las columnas excepto las que involucran fechas.

En las columnas datas_de_pagamento y datas_combinadas_pagamento tenemos fechas en el formato 'día/mes/año' (dd/mm/AAAA). Transforme estos datos al tipo datetime y busque una forma de visualización de subconjunto que pueda contribuir al objetivo del contexto en el que se insertan los datos.

Administrar condominios es una tarea que requiere mucha atención y organización. Entre las diversas responsabilidades de gestión se encuentra el cobro del alquiler a los inquilinos. Para garantizar la buena salud financiera de la empresa, es fundamental que estos pagos se realicen de forma regular y puntual. Sin embargo, sabemos que esto no siempre sucede. Teniendo esto en cuenta, propongo un desafío de procesamiento de datos con el objetivo de analizar el retraso en el pago de la renta en el condominio ficticio de algunos residentes.

import pandas as pd
import json
import matplotlib.pyplot as plt

with open('/content/dados_locacao_imoveis.json', 'r', encoding='utf-8') as f:
    dados = json.load(f)

df = pd.DataFrame(dados['dados_locacao'])

print("Estructura original:")
display(df.head())

df = df.explode([
    'datas_combinadas_pagamento',
    'datas_de_pagamento',
    'valor_aluguel'
]).reset_index(drop=True)

df['datas_combinadas_pagamento'] = pd.to_datetime(
    df['datas_combinadas_pagamento'],
    format='%d/%m/%Y'
)

df['datas_de_pagamento'] = pd.to_datetime(
    df['datas_de_pagamento'],
    format='%d/%m/%Y'
)

print("\nTipos de datos después de conversión:")
print(df[['datas_combinadas_pagamento', 'datas_de_pagamento']].dtypes)

df['dias_atraso'] = (
    df['datas_de_pagamento'] - df['datas_combinadas_pagamento']
).dt.days

print("\nEjemplo con cálculo de atraso:")
display(df[['apartamento',
            'datas_combinadas_pagamento',
            'datas_de_pagamento',
            'dias_atraso']].head())
            
atraso_promedio = (
    df.groupby('apartamento')['dias_atraso']
    .mean()
    .reset_index()
)

print("\nAtraso promedio por apartamento:")
display(atraso_promedio)

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad