Análisis de Ventas Mensuales con NumPy: Transformaciones y Insights
Resumen
Ejercicio: Análisis de Ventas Mensuales con NumPy
El objetivo de este ejercicio es trabajar con arrays de NumPy para analizar y manipular datos de ventas de tres productos a lo largo de un año. A través de diversas operaciones, explorarás cómo usar NumPy para obtener estadísticas, realizar manipulaciones avanzadas y aplicar técnicas de indexación para extraer información clave.
Instrucciones:
Paso 1: Crear Arrays con Datos de Ventas
Usa la librería numpy para crear los siguientes arrays:
meses: un array con los nombres de los meses del año.
ventas_A, ventas_B, ventas_C: arrays que representan las ventas mensuales de tres productos diferentes.
Paso 2: Estadísticas Básicas
Calcula la media y la suma de ventas para los productos A, B y C usando las funciones de NumPy.
Imprime estos valores en el formato siguiente:
Media de ventas Producto A: <valor>
Suma de ventas Producto A: <valor>
Repite para los productos B y C.
Paso 3: Manipulación y Análisis de Datos
Total de ventas por mes: Suma las ventas de los tres productos para cada mes.
Promedio de ventas por producto: Calcula el promedio de ventas por producto.
Mes con mayor y menor ventas: Identifica qué mes tuvo el total de ventas más alto y cuál el más bajo usando las funciones np.argmax y np.argmin.
Paso 4: Operaciones Avanzadas con NumPy
Reshape y Transposición:
Crea una matriz 2D con las ventas de los tres productos y transforma su forma (reshape) a un array tridimensional con dimensiones (3, 4, 3).
Transpone la matriz de ventas para que las filas se conviertan en columnas.
Invertir arrays: Invierte las ventas de cada producto en orden de meses.
Aplanar la matriz: Convierte la matriz de ventas a un array unidimensional.
Paso 5: Análisis de Elementos Únicos
Utiliza np.unique para encontrar los elementos únicos en los datos de ventas y cuenta cuántas veces aparece cada uno.
Paso 6: Indexación y Slicing
Ventas del primer trimestre: Extrae las ventas de los tres primeros meses del año.
Indexación booleana: Selecciona los meses donde el total de ventas de los tres productos supere los 800.
Selección avanzada: Usa una lista de índices para seleccionar las ventas de los meses pares (o selecciona los meses a tu elección) y muestra esas ventas en una nueva matriz.
El objetivo de este ejercicio es trabajar con arrays de NumPy para analizar y manipular datos de ventas de tres productos a lo largo de un año. A través de diversas operaciones, explorarás cómo usar NumPy para obtener estadísticas, realizar manipulaciones avanzadas y aplicar técnicas de indexación para extraer información clave.
Instrucciones:
Paso 1: Crear Arrays con Datos de Ventas
Usa la librería numpy para crear los siguientes arrays:
meses: un array con los nombres de los meses del año.
ventas_A, ventas_B, ventas_C: arrays que representan las ventas mensuales de tres productos diferentes.
Paso 2: Estadísticas Básicas
Calcula la media y la suma de ventas para los productos A, B y C usando las funciones de NumPy.
Imprime estos valores en el formato siguiente:
Media de ventas Producto A: <valor>
Suma de ventas Producto A: <valor>
Repite para los productos B y C.
Paso 3: Manipulación y Análisis de Datos
Total de ventas por mes: Suma las ventas de los tres productos para cada mes.
Promedio de ventas por producto: Calcula el promedio de ventas por producto.
Mes con mayor y menor ventas: Identifica qué mes tuvo el total de ventas más alto y cuál el más bajo usando las funciones np.argmax y np.argmin.
Paso 4: Operaciones Avanzadas con NumPy
Reshape y Transposición:
Crea una matriz 2D con las ventas de los tres productos y transforma su forma (reshape) a un array tridimensional con dimensiones (3, 4, 3).
Transpone la matriz de ventas para que las filas se conviertan en columnas.
Invertir arrays: Invierte las ventas de cada producto en orden de meses.
Aplanar la matriz: Convierte la matriz de ventas a un array unidimensional.
Paso 5: Análisis de Elementos Únicos
Utiliza np.unique para encontrar los elementos únicos en los datos de ventas y cuenta cuántas veces aparece cada uno.
Paso 6: Indexación y Slicing
Ventas del primer trimestre: Extrae las ventas de los tres primeros meses del año.
Indexación booleana: Selecciona los meses donde el total de ventas de los tres productos supere los 800.
Selección avanzada: Usa una lista de índices para seleccionar las ventas de los meses pares (o selecciona los meses a tu elección) y muestra esas ventas en una nueva matriz.
Realice el Ejercicio 1 con un poco más de complejidad :
import numpy as np
# Función para ingresar los datos de los estudiantes y sus calificaciones
def ingresar_datos(): num_estudiantes =int(input("¿Cuántos estudiantes desea ingresar? ")) estudiantes =[]for _ inrange(num_estudiantes): nombre =input("Nombre del estudiante: ") calificaciones =[]for i inrange(4): calificacion =float(input(f"Ingresa la calificación del examen {i + 1}: ")) calificaciones.append(calificacion) estudiantes.append([nombre]+ calificaciones)return np.array(estudiantes)#FUNCIONPARAENCONTRARELPROMEDIOPORESTUDIANTEdef promedio_por_estudiante(estudiantes): calificaciones = estudiantes[:,1:].astype(float) promedios = np.mean(calificaciones, axis=0)for i, estudiante inenumerate(estudiantes[:,0]):print(f"estudiante: {estudiante} Promedio: {promedios[i]}")return promedios
#FUNCIONPARAENCONTRARELPROMEDIODECADAEXAMENdef promedio_examen(estudiantes): calificaciones = estudiantes[:,1:].astype(float) promedio_examenes = np.mean(calificaciones, axis=0)for i, promedio inenumerate(promedio_examenes):print(f"Promedio examen {i + 1}: {promedio}")#FUNCIONPARAENCONTRARELESTUDIANTECONMEJORPUNTAJEENELTERCEREXAMENdef mayor_promedio_tercer_examen(estudiantes): calificaciones_tercer_examen = estudiantes[:,3].astype(float) mejor_promedio_tercer_examen = np.argmax(calificaciones_tercer_examen)print(f"El Estudiante con mayor promedio en el examen 3 es : {estudiantes[mejor_promedio_tercer_examen, 0]} con una calificacion de {calificaciones_tercer_examen[mejor_promedio_tercer_examen]}")#FUNCIONPARAENCONTRARELESTUDIANTECONMENORPROMEDIOdef promedio_menor_estudiante(estudiantes, promedios): indice_bajo = np.argmin(promedios)print(f"El estudiante con menor promedio es : {estudiantes[indice_bajo]} , con una calificacion de {promedios[indice_bajo]}")#PROGRAMAPRINCIPALdef main(): estudiantes =ingresar_datos()print("\n EL PROMEDIO DE CALIFICACIONES POR ESTUDIANTES: ") promedios =promedio_por_estudiante(estudiantes)print(promedios)print("\n EL PROMEDIO DE CADA DE EXAMEN: ") promedio_por_examen =promedio_examen(estudiantes)print(promedio_por_examen)print("\n EL ESTUDIANTE CON MEJOR PROMEDIO EN EL TERCER EXAMEN ES : ") indice_alto_tercer_examen =mayor_promedio_tercer_examen(estudiantes)print(indice_alto_tercer_examen)print("\n El ESTUDIANTE CON MENOR PROMEDIO ES: ") indice_bajo =promedio_menor_estudiante(estudiantes, promedios)print(indice_bajo)if __name__ =="__main__":main()```Cualquier consejo, los estaré leyendo gracias!!!
El objetivo es realizar un análisis de datos de ventas mensuales para 3 productos en una tienda, durante 1 año. Donde realizaras transformaciones básicas para obtener insights valiosos sobre e rendimiento de cada una de estas ventas.
Encontraras toda la información del ejercicio en los recursos de esta clase.
import numpy as np
meses = np.array(['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'])productoA = np.array([150,200,250,300,220,210,180,190,230,240,280,300])productoB = np.array([180,210,230,250,270,260,240,250,270,290,310,330])productoC = np.array([200,220,240,260,280,300,320,340,360,380,400,420])# Vamos a imprimir la media y la suma de cada uno de los productos# Media y suma del producto AmediaProductoA = np.mean(productoA)sumaProductoA = np.sum(productoA)# Media y suma del producto BmediaProductoB = np.mean(productoB)sumaProductoB = np.sum(productoB)# Media y suma del producto CmediaProductoC = np.mean(productoC)sumaProductoC = np.sum(productoC)print('La media del producto A es:\n', mediaProductoA)print('La suma del producto A es:\n', sumaProductoA)print('La media del producto B es:\n', mediaProductoB)print('La suma del producto B es:\n', sumaProductoB)print('La media del producto C es:\n', mediaProductoC)print('La suma del producto C es:\n', sumaProductoC)# Total de ventas por mes: sumar las ventas de los 3 productos por mesTotalDeVentasPorMes = productoA + productoB + productoC
tiposDatos =[('Mes','U10'),('sumaTotal','i4')]reporte = np.array(list(zip(meses,TotalDeVentasPorMes)),dtype=tiposDatos)print('Reporte de ventas mes a mes:\n',reporte)# Promedio de ventas por producto: Calcula el promedio de ventas por productopromedioProductoA = np.mean(productoA)promedioProductoB = np.mean(productoB)promedioProductoC = np.mean(productoC)print('Promedio producto A:\n',promedioProductoA)print('Promedio producto B:\n',promedioProductoB)print('Promedio producto C:\n',promedioProductoC)# Mes con mayor y menor ventas: Identifica qué mes tuvo el total de ventas más alto y cuál el más bajo usando las funciones np.argmax y np.argminmesMayorVentas = np.argmax(TotalDeVentasPorMes)mesMenorVentas = np.argmin(TotalDeVentasPorMes)print(f'El mes de mayor ventas fue {meses[mesMayorVentas]} con un total de {TotalDeVentasPorMes[mesMayorVentas]}')print(f'El mes de menor ventas fue {meses[mesMenorVentas]} con un total de {TotalDeVentasPorMes[mesMenorVentas]}')# Crea una matriz 2D con las ventas de los tres productos y transforma su forma (reshape) a un array tridimensional con dimensiones (3, 4, 3)matrizProductos = np.array([productoA,productoB,productoC])print('Matriz 2D de los productos\n',matrizProductos)print('Reshape\n',matrizProductos.reshape(3,4,3))# Transpone la matriz de ventas para que las filas se conviertan en columnas.print('Transponer\n',matrizProductos.T)# Invertir arrays: Invierte las ventas de cada producto en orden de meses.print('Reves del producto A\n',productoA[::-1])print('Reves del producto B\n',productoB[::-1])print('Reves del producto C\n',productoC[::-1])# Aplanar la matriz: Convierte la matriz de ventas a un array unidimensional.flatteningMatriz = matrizProductos.flatten()print('Conversión de matriz a unidimensional\n',flatteningMatriz)# Utiliza np.unique para encontrar los elementos únicos en los datos de ventas y cuenta cuántas veces aparece cada unoelementosUnicosVentas, conteoCadaElemento = np.unique(flatteningMatriz, return_counts=True)print(f'Los elementos unicos de ventas son\n {elementosUnicosVentas} y las veces que aparece cada uno\n {conteoCadaElemento}')# Ventas del primer trimestre: Extrae las ventas de los tres primeros meses del añoventasPrimerTrimestre = TotalDeVentasPorMes[0:3]print('Las ventas del primer trimestre son\n', ventasPrimerTrimestre)# Indexación booleana: Selecciona los meses donde el total de ventas de los tres productos supere los 800.ventasMayor800 = TotalDeVentasPorMes >800mesesMayor800 = meses[ventasMayor800]valor = TotalDeVentasPorMes[ventasMayor800]reporteVentasMayor800 = np.array(list(zip(mesesMayor800,valor)),dtype=tiposDatos)print('Meses con ventas mayores a 800\n',reporteVentasMayor800)# Selección avanzada: Usa una lista de índices para seleccionar las ventas de los meses pares (o selecciona los meses a tu elección) y muestra esas ventas en una nueva matriz.listaIndices =[0,2,4,6,8,10]ventasMesesPares = TotalDeVentasPorMes[listaIndices]mesesPares = meses[listaIndices]matrizNueva = np.array(list(zip(mesesPares,ventasMesesPares)),dtype=tiposDatos)print('Meses pares\n',matrizNueva)
Calcular la media en NumPy es tan directo como sumar todos los valores y dividirlos entre el total, pero la gracia aquí es hacerlo con una sola función optimizada.
¿Recuerdas cuál es el nombre de esa función que reduce las dimensiones de tu matriz para darte el promedio por mes o por producto?
Este codigo lo genere como practica , aplicando conceptos aprendidos.
import numpy as np
mes = np.array(["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"])ventas_A = np.random.randint(100,500,12)ventas_B = np.random.randint(65,780,12)ventas_C = np.random.randint(76,940,12)print(ventas_A)print(ventas_B)print(ventas_C)print(f"suma total de las ventas A = {ventas_A.sum()} y media = {np.round(ventas_A.mean(),2)}")print(f"suma total de las ventas A = {ventas_B.sum()} y media = {np.round(ventas_B.mean(),2)}")print(f"suma total de las ventas A = {ventas_C.sum()} y media = {np.round(ventas_C.mean(),2)}")vmax_A =(ventas_A.max())vmax_B =(ventas_B.max())vmax_C =(ventas_C.max())vmin_A =(ventas_A.min())vmin_B =(ventas_B.min())vmin_C =(ventas_C.min())pmax_A = ventas_A.argmax()pmax_B = ventas_B.argmax()pmax_C = ventas_C.argmax()pmin_A = ventas_A.argmin()pmin_B = ventas_B.argmin()pmin_C = ventas_C.argmin()print(f"La mayor venta de A es = {vmax_A} y corresponde al mes {mes[pmax_A]} y la venta minima es {vmin_A} y corresponde al mes {mes[pmin_A]}")print(f"La mayor venta de B es = {vmax_B} y corresponde al mes {mes[pmax_B]} y la venta minima es {vmin_B} y corresponde al mes {mes[pmin_B]}")print(f"La mayor venta de C es = {vmax_C} y corresponde al mes {mes[pmax_C]} y la venta minima es {vmin_C} y corresponde al mes {mes[pmin_C]}")A =sum(ventas_A)B =sum(ventas_B)C =sum(ventas_C)suma_total = A+B+C
print(f"Suma Total = {suma_total}")suma_array = ventas_A + ventas_B + ventas_C
print(suma_array)print(mes)mxa = suma_array.argmax()mna = suma_array.argmin()print(mxa)print(mna)print(f"el mes con mayor venta fue: {mes[mxa]}")print(f"el mes con menor venta fue: {mes[mna]}")matriz_u = np.array([ventas_A, ventas_B, ventas_C])print(matriz_u)print(matriz_u.T)print(matriz_u.reshape(3,4,3))print(matriz_u.flatten())inv_mat_u = matriz_u[:,::-1]print(inv_mat_u)# invierte el orden de los mesesprint(np.unique(matriz_u))print(np.unique (matriz_u, return_counts=True))print(f"ventas primer trimestre de A {ventas_A[:3]}, se vendio una media de {np.round(ventas_A[:3].mean(),2)} USD")print(f"ventas primer trimestre de B {ventas_B[:3]}, se vendio una media de {np.round(ventas_B[:3].mean(),2)} USD")print(f"ventas primer trimestre de C {ventas_C[:3]}, se vendio una media de {np.round(ventas_C[:3].mean(),2)} USD")print(mes[suma_array>800])Ac =sum(ventas_A[:3])Bc =sum(ventas_B[:3])Cc =sum(ventas_C[:3])Total_trimestres = Ac + Bc + Cc
print(f"Venta totales del trimestre fue de {Total_trimestres} USD")print(f"Solo meses de las ventas A que vendieron mas de 270 {mes[ventas_A>270]}, respetivamente {ventas_A[ventas_A>270]} USD")print(f"Solo meses de las ventas B que vendieron mas de 220 {mes[ventas_B>220]}, respetivamente {ventas_B[ventas_B>220]} USD")print(f"Solo meses de las ventas C que vendieron mas de 250 {mes[ventas_C>250]}, respetivamente {ventas_C[ventas_C>250]} USD")print(mes[[1,3,5,7,9,11]])
Hola amigos, quise probar aplicar unos for en algunas partes para identificar bien a que mes pertenece ese valor o cuantas veces se repetian los valores unicos y ponerlos al frente.
Comparto mi codigo:
import numpy as np
# Paso 1: Crear arrays con datos de ventas mensualesmeses = np.array(['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'])ventas_A = np.array([150,200,250,300,220,210,180,190,230,240,280,300])ventas_B = np.array([180,210,230,250,270,260,240,250,270,290,310,330])ventas_C = np.array([200,220,240,260,280,300,320,340,360,380,400,420])#PASO 2print('PASO 2: ESTADISTICA BASICA***')#Producto Asuma_A = np.sum(ventas_A)mean_A= np.mean(ventas_A)print('Media de ventas Producto A: ', mean_A)print('Suma de ventas Producto A: ', suma_A)#Producto Bsuma_B = np.sum(ventas_B)mean_B= np.mean(ventas_B)print('Media de ventas Producto B: ', mean_B)print('Suma de ventas Producto B: ', suma_B)#Producto Csuma_C = np.sum(ventas_C)mean_C= np.mean(ventas_C)print('Media de ventas Producto C: ', mean_C)print('Suma de ventas Producto C: ', suma_C)#PASO 3print('\nPASO 3: MANIPULACION Y ANALISIS DE DATOS***')print('Suma total por meses: ')suma_total = ventas_A + ventas_B + ventas_C
for i,y inzip(suma_total,meses):print(y,':', i)promedio_producto = np.array([mean_A,mean_B,mean_C])print('\nMedia producto A: ', promedio_producto[0],'Media producto B: ', promedio_producto[1],'Media producto C: ', promedio_producto[2])#Mes con mayor y menos ventasprint('El mes con mayor ventas es: ', meses[np.argmax(suma_total)])print('El mes con menor ventas es:', meses[np.argmin(suma_total)])print('PASO 4: OPERACIONES AVANZADAS CON NUMPY***')matrix_2D = np.array([ventas_A, ventas_B, ventas_C])#Pasamos a 2Dprint('Array 2D\n', matrix_2D)reshaped_array = matrix_2D.reshape(3,4,3)#Pasamos a 3Dprint('\nMatrizreshaped_array\n')print(reshaped_array)traspose_matrix = matrix_2D.T
print('Matriz traspuesta\n', traspose_matrix)#Transponemosreversed_ventas = matrix_2D[:,::-1]print('\nVentas invertidas\n', reversed_ventas)flatten = matrix_2D.flatten()print('\nVentas flatten\n', flatten)print('\nPASO 5: ANALISIS DE ELEMENTOS UNICOS***')elementos_unicos, count = np.unique(matrix_2D, return_counts=True)for i,y inzip(elementos_unicos,count):print(i,'Se repite: ', y ,'veces')print(np.sum(count))print('\nPASO 6: INDEXACION Y SLICING***')trimestre_ventas = np.array([matrix_2D[:,0:3]])print(trimestre_ventas)boolean = suma_total >800print(suma_total)print(boolean)print([meses[boolean]])#boolean = meses([suma_total > 800])#print('\n' , boolean)
import numpy as np
# Meses del año
meses = np.array(['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'])# Ventas de cada sucursal
ventas_norte = np.array([120,140,160,180,200,220,210,230,250,270,290,310])ventas_sur = np.array([100,130,150,170,190,210,200,220,240,260,280,300])ventas_centro = np.array([90,110,130,150,170,190,210,230,250,270,290,320])#EstadisticasBasicas# Suma total de ventas por sucursal
total_norte = np.sum(ventas_norte)total_sur = np.sum(ventas_sur)total_centro = np.sum(ventas_centro)print(f"Total de ventas en la sucursal Norte: {total_norte}")print(f"Total de ventas en la sucursal Sur: {total_sur}")print(f"Total de ventas en la sucursal Centro: {total_centro}")# Promedio de ventas por sucursal
promedio_norte = np.mean(ventas_norte)promedio_sur = np.mean(ventas_sur)promedio_centro = np.mean(ventas_centro)print(f"Promedio de ventas en la sucursal Norte: {promedio_norte:.2f}")print(f"Promedio de ventas en la sucursal Sur: {promedio_sur:.2f}")print(f"Promedio de ventas en la sucursal Centro: {promedio_centro:.2f}")
# total de ventas por mes
total_ventas_mes = ventas_norte + ventas_sur + ventas_centro
print("Total de ventas por mes:")for mes, total inzip(meses, total_ventas_mes):print(f"{mes}: {total}")
# promedio de ventas por producto
promedio_ventas_producto = total_ventas_mes /3print("Promedio de ventas por producto:")for mes, promedio inzip(meses, promedio_ventas_producto):print(f"{mes}: {promedio:.2f}")
# total mes con mayor y menor ventas
mes_mayor_ventas = meses[np.argmax(total_ventas_mes)]mes_menor_ventas = meses[np.argmin(total_ventas_mes)]mes_mayor_menor_ventas_sucursal = np.argmax([total_norte, total_sur, total_centro])print(f"Mes con mayor ventas: {mes_mayor_ventas} con {np.max(total_ventas_mes)} ventas")print(f"Mes con menor ventas: {mes_menor_ventas} con {np.min(total_ventas_mes)} ventas")print(f"Sucursal con mayor ventas: {['Norte', 'Sur', 'Centro'][mes_mayor_menor_ventas_sucursal]} con {max(total_norte, total_sur, total_centro)} ventas")# Mes con mayor venta en cada sucursal
print("📊 Mes con mayor venta por sucursal:\n")sucursal_norte = np.argmax(ventas_norte)sucursal_sur = np.argmax(ventas_sur)sucursal_centro = np.argmax(ventas_centro)print("Norte:", meses[sucursal_norte],"-", ventas_norte[sucursal_norte])print("Sur:", meses[sucursal_sur],"-", ventas_sur[sucursal_sur])print("Centro:", meses[sucursal_centro],"-", ventas_centro[sucursal_centro])#Diferencia de ve tas entre sucursales
print("📊 Diferencia de ventas entre sucursales por mes:\n")for mes, n, s, c inzip(meses, ventas_norte, ventas_sur, ventas_centro):print(f"{mes}:")print(f" Norte - Sur: {n - s}")print(f" Norte - Centro: {n - c}")print(f" Sur - Centro: {s - c}")print()# Reshape y Transposeventas_matrix= np.array([ventas_norte, ventas_sur, ventas_centro])ventas_reshaped = ventas_matrix.reshape(3,4,3) # Reshape a una matriz de 3x4x3
ventas_transposed = ventas_matrix.T # Transpose de la matriz original
print("ventas_matrix:\n", ventas_matrix)print("ventas_reshaped:\n", ventas_reshaped)print("ventas_transposed:\n", ventas_transposed)# Invertir arrays y aplanar matrices
Ventas_inverted= ventas_matrix[:,::-1] # Invertir el orden de las ventas por mes
ventas_flattened = ventas_matrix.flatten() # Aplanar la matriz a un array
print("Ventas invertidas:\n",Ventas_inverted)print("Ventas aplanadas:\n", ventas_flattened)# Paso5:Análisis de elementos únicos y sus conteos
elementos_unicos, conteos = np.unique(ventas_flattened, return_counts=True)print("Elementos únicos en las ventas aplanadas:\n", elementos_unicos)print("Conteos de cada elemento único:\n", conteos)# Seleccionar ventas del primer trimestre
primer_trimestre = ventas_matrix[:,:3]print("Ventas del primer trimestre:\n", primer_trimestre)# Meses con ventas totales superiores a 800meses_superiores_800 = meses[total_ventas_mes >800]print("Meses con ventas totales superiores a 800:")for mes inmeses_superiores_800:print(f" {mes}: {total_ventas_mes[meses == mes][0]}")# Selección avanzada
indices =[0,2,4,6,8,10] # Índices de los meses pares
ventas_pares = ventas_matrix[:, indices]print("Ventas de los meses pares:\n", ventas_pares)#📉 Crecimiento mes a mes(tendencia)print("📈 CRECIMIENTO MENSUAL POR SUCURSAL\n")sucursales ={"Norte": ventas_norte,"Sur": ventas_sur,"Centro": ventas_centro
}for nombre, ventas in sucursales.items():print(f"--- {nombre} ---") crecimiento = np.diff(ventas)for i inrange(len(crecimiento)):print(f"{meses[i+1]}: {crecimiento[i]}")print() # espacio entre sucursales
#📊 Porcentaje de participación por sucursal
total_general = total_norte + total_sur + total_centro
print("📊 Participación de cada sucursal:")print(f"Norte: {(total_norte / total_general)*100:.2f}%")print(f"Sur: {(total_sur / total_general)*100:.2f}%")print(f"Centro: {(total_centro / total_general)*100:.2f}%")#🏆 Sucursal ganadora por mes
print("🏆 Sucursal ganadora por mes:\n")nombres = np.array(["Norte","Sur","Centro"])ventas_stack = np.vstack([ventas_norte, ventas_sur, ventas_centro])ganador_indices = np.argmax(ventas_stack, axis=0)for i, mes inenumerate(meses):print(f"{mes}: {nombres[ganador_indices[i]]}")
import numpy as np
# Meses del año
meses = np.array(['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',
print(f"Mes con mayor ventas: {mes_mayor_ventas} con {np.max(total_ventas_mes)} ventas")
print(f"Mes con menor ventas: {mes_menor_ventas} con {np.min(total_ventas_mes)} ventas")
print(f"Sucursal con mayor ventas: {['Norte', 'Sur', 'Centro'][mes_mayor_menor_ventas_sucursal]} con {max(total_norte, total_sur, total_centro)} ventas")
# Selección avanzada: Usa una lista de índices para seleccionar las ventas de los meses pares (o selecciona los meses a tu elección) y muestra esas ventas en una nueva matriz.
Aprender practicando siempre es la mejor forma de entender los temas; esta actividad fue interesante para poner en práctica lo visto en clase 📈.
import numpy as np
#Paso 1: Crear Arrays con Datos de Ventasmonths = np.array(['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'])product_A = np.array([150,200,250,300,220,210,180,190,230,240,280,300])product_B = np.array([180,210,230,250,270,260,240,250,270,290,310,330])product_C = np.array([200,220,240,260,280,300,320,340,360,380,400,420])# Paso 2: Estadísticas Básicasprint(f"Media de ventas Producto A: {np.mean(product_A)}.\nSuma de ventas Producto A: {np.sum(product_A)}.")print(f"Media de ventas Producto B: {np.mean(product_B)}.\nSuma de ventas Producto B: {np.sum(product_B)}.")print(f"Media de ventas Producto C: {np.mean(product_C)}.\nSuma de ventas Producto C: {np.sum(product_C)}.")print("\n\n\n")#Paso 3: Manipulación y Análisis de Datossale_mes=np.vstack((product_A, product_B, product_C))print(sale_mes,"\n","-"*100)promedio_meses=np.mean(sale_mes, axis=0)for mes, promedio inzip(months, promedio_meses):print(f"{mes}: {promedio:.1f}\n")print("-"*100)suma_meses=np.sum(sale_mes, axis=0)for mes, suma inzip(months, suma_meses):print(f"{mes}: {suma:.1f}\n")indice_maxima_gananacias=np.argmax(suma_meses, axis=0)indice_menos_ganancias=np.argmin(suma_meses, axis=0)print(f"El mes con mayor ganancias fue el {months[indice_maxima_gananacias]}")print(f"El mes con menor gananacia fue el {months[indice_menos_ganancias]}")print("\n\n\n")# Paso 4: Operaciones Avanzadas con NumPyventas=np.vstack((product_A, product_B, product_C))print(sale_mes)print("-"*100)reshaped_ventas=ventas.reshape(3,4,3)print(reshaped_ventas)print("-"*100)transpuesta_ventas=ventas.T
print(transpuesta_ventas)print("-"*100)inversa=ventas[::-1]print(inversa)print("-"*100)unidimensional=ventas.flatten()print(unidimensional)print("\n\n\n")#Paso 5: Análisis de Elementos Únicoselementos_unicos, cont=np.unique(ventas, return_counts=True)print(elementos_unicos)print(cont)print("\n\n\n")#Paso 6: Indexación y Slicingprint(ventas[:,:3])print("-"*100)suma_mes=np.sum(ventas, axis=0)print(suma_mes)bool_index=suma_mes >800print(f"Los meses que superan los $800 son {months[bool_index]}")meses_impares=[1,3,5,7,9,11]ventas_pares=ventas[:, meses_impares]print(ventas_pares)