-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
98 lines (75 loc) · 2.86 KB
/
main.py
File metadata and controls
98 lines (75 loc) · 2.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import pandas as pd
import os
print("INICIO DEL SCRIPT")
# Rutas
input_file = "input/ventas.xlsx"
output_file = "output/ventas_procesadas.xlsx"
summary_file = "output/resumen_clientes.xlsx"
stats_file = "output/estadisticas_generales.xlsx"
try:
# Validar si existe el archivo de entrada
if not os.path.exists(input_file):
print(f"ERROR: No se encontró el archivo de entrada: {input_file}")
exit()
print("Archivo encontrado correctamente.")
print("Leyendo archivo Excel...")
# Leer archivo Excel
df = pd.read_excel(input_file)
# Limpiar espacios en nombres de columnas
df.columns = df.columns.str.strip()
print("Columnas detectadas:", list(df.columns))
# Validar columnas necesarias
required_columns = ["cliente", "producto", "cantidad", "precio_unitario"]
for col in required_columns:
if col not in df.columns:
print(f"ERROR: Falta la columna requerida: {col}")
exit()
# Crear nueva columna total
df["total"] = df["cantidad"] * df["precio_unitario"]
# Guardar archivo procesado
df.to_excel(output_file, index=False)
print("Archivo procesado correctamente.")
print(f"Se guardó en: {output_file}")
# Crear resumen por cliente
resumen = df.groupby("cliente", as_index=False)["total"].sum()
resumen.columns = ["cliente", "total_vendido"]
# Ordenar de mayor a menor
resumen = resumen.sort_values(by="total_vendido", ascending=False)
# Guardar resumen
resumen.to_excel(summary_file, index=False)
print("Resumen por cliente generado correctamente.")
print(f"Se guardó en: {summary_file}")
# Crear estadísticas generales
estadisticas = pd.DataFrame({
"metricas": [
"total_registros",
"total_clientes",
"venta_total_general",
"venta_promedio_por_registro",
"cliente_top"
],
"valor": [
len(df),
df["cliente"].nunique(),
df["total"].sum(),
df["total"].mean(),
resumen.iloc[0]["cliente"]
]
})
estadisticas.to_excel(stats_file, index=False)
print("Estadísticas generales generadas correctamente.")
print(f"Se guardó en: {stats_file}")
# Mostrar resumen general
print("\nRESUMEN GENERAL")
print(f"Total de registros procesados: {len(df)}")
print(f"Total de clientes únicos: {df['cliente'].nunique()}")
print(f"Venta total general: {df['total'].sum()}")
print(f"Venta promedio por registro: {df['total'].mean()}")
# Mostrar top 3 clientes
print("\nTOP 3 CLIENTES POR VENTA")
top_3 = resumen.head(3).reset_index(drop=True)
for i, row in top_3.iterrows():
print(f"{i + 1}. {row['cliente']} - {row['total_vendido']}")
except Exception as e:
print("Ocurrió un error durante la ejecución del script.")
print("Detalle del error:", e)