You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

1 Días
1 Hrs
8 Min
23 Seg

Caso Práctico de Análisis de Datos

9/32
Resources

Exercise: Monthly Sales Analysis with NumPy

The objective of this exercise is to work with NumPy arrays to analyze and manipulate sales data for three products over the course of a year. Through various operations, you will explore how to use NumPy to obtain statistics, perform advanced manipulations, and apply indexing techniques to extract key information.

Instructions:

Step 1: Create Arrays with Sales Data.

  • Use the numpy library to create the following arrays:
    months: an array with the names of the months of the year.
    sales_A, sales_B, sales_C: arrays representing the monthly sales of three different products.

Step 2: Basic Statistics

  • Calculate the average and sum of sales for products A, B and C using NumPy functions.
  • Print these values in the following format:
  • Sales mean Product A: <value>.
  • Sales sum Product A: <value>.
  • Repeat for products B and C.

Step 3: Data Manipulation and Analysis

  • Total sales per month: Sum the sales of the three products for each month.
  • Average sales per product: Calculate the average sales per product.
  • Highest and lowest sales month: Identify which month had the highest and lowest total sales using the functions np.argmax and np.argmin.

Step 4: Advanced Operations with NumPy

Reshape and Transpose:

  • Creates a 2D array with the sales of the three products and transforms its shape (reshape) to a three-dimensional array with dimensions (3, 4, 3).
  • Transpose the sales matrix so that the rows become columns.
  • Invert arrays: Inverts the sales of each product in order of months.
  • Flatten array: Converts the sales matrix to a one-dimensional array.

Step 5: Unique Element Analysis

  • Use np.unique to find the unique elements in the sales data and count how many times each appears.

Step 6: Indexing and Slicing

  • First quarter sales: Extract sales for the first three months of the year.
  • Boolean indexing: Select the months where the total sales of the three products exceed 800.
  • Advanced selection: Use a list of indexes to select the sales of the even months (or select the months of your choice) and display those sales in a new matrix.

Contributions 28

Questions 2

Sort by:

Want to see more contributions, questions and answers from the community?

Aquí comparto mi solución al reto: <https://colab.research.google.com/drive/185pKUfOUKJC0YsRejDoE_T1nW9P3axAr?usp=sharing>
Realice el Ejercicio 1 con un poco más de complejidad : ```js 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 _ in range(num_estudiantes): nombre = input("Nombre del estudiante: ") calificaciones = [] for i in range(4): calificacion = float(input(f"Ingresa la calificación del examen {i + 1}: ")) calificaciones.append(calificacion) estudiantes.append([nombre] + calificaciones) return np.array(estudiantes) #FUNCION PARA ENCONTRAR EL PROMEDIO POR ESTUDIANTE def promedio_por_estudiante(estudiantes): calificaciones = estudiantes[:, 1:].astype(float) promedios = np.mean(calificaciones, axis=0) for i, estudiante in enumerate(estudiantes[:, 0 ]): print(f"estudiante: {estudiante} Promedio: {promedios[i]}") return promedios #FUNCION PARA ENCONTRAR EL PROMEDIO DE CADA EXAMEN def promedio_examen(estudiantes): calificaciones = estudiantes[: , 1:].astype(float) promedio_examenes = np.mean(calificaciones, axis=0) for i, promedio in enumerate(promedio_examenes): print(f"Promedio examen {i + 1}: {promedio}") #FUNCION PARA ENCONTRAR EL ESTUDIANTE CON MEJOR PUNTAJE EN EL TERCER EXAMEN def 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]}") #FUNCION PARA ENCONTRAR EL ESTUDIANTE CON MENOR PROMEDIO def 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]}") #PROGRAMA PRINCIPAL def 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!!!
**Caso Práctico de Análisis de Datos** 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**.
![](https://static.platzi.com/media/user_upload/image-e99af954-c29f-44f4-82e4-af07a6462ab6.jpg) ![](https://static.platzi.com/media/user_upload/image-846f8d2a-09b3-4551-b39d-3f88260d1b68.jpg)
copia y resuelve xd ```js months = 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]) ```
![](https://static.platzi.com/media/user_upload/upload-41e1ef40-0010-46a9-8be6-f36277c634d9.png)![](https://static.platzi.com/media/user_upload/upload-d66eb611-7f77-497e-8058-2356ece819d3.png)
Resolución ```js import numpy as np """ Paso 1 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. """ 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]) """ Paso 2 Calcula la media y la suma de ventas para los productos A, B y C usando las funciones de NumPy. """ print("Media de Producto") media_producto_A= np.mean(productoA) print("Media del producto A es: ", media_producto_A) media_producto_B= np.mean(productoB) print("Media del producto B es: ", media_producto_B) media_producto_C= np.mean(productoC) print("Media del producto A es: ", media_producto_C) print("Suma de Producto") suma_producto_A= np.sum(productoA) print("Suma del producto A es: ", suma_producto_A) suma_producto_B= np.sum(productoB) print("Suma del producto B es: ", suma_producto_B) suma_producto_C= np.sum(productoC) print("Suma del producto C es: ", suma_producto_C) #Esto se pudo haber mejorado con una funcion que llamara al metodo y le pasara el array por parametro """ 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. """ Total_VentasXMes= productoA + productoB + productoC for i in range(0, 12): print(f"Total de Ventas del mes {meses[i]} = {Total_VentasXMes[i]} ") print(meses) print(Total_VentasXMes) mediaVentasXProducto= np.array([media_producto_A, media_producto_B, media_producto_C]) print(f"Media por producto A, B y C---> {mediaVentasXProducto}") mes_menor_venta= np.argmin(productoA) print(f"El mes de peor venta del producto A es {meses[mes_menor_venta]}= {productoA[mes_menor_venta]}") mes_menor_venta= np.argmin(productoB) print(f"El mes de peor venta del producto B es {meses[mes_menor_venta]}= {productoB[mes_menor_venta]}") mes_menor_venta= np.argmin(productoC) print(f"El mes de peor venta del producto C es {meses[mes_menor_venta]}= {productoC[mes_menor_venta]}") mes_menor_venta= np.argmin(Total_VentasXMes) print(f" Mes de menor Ventas Totales {meses[mes_menor_venta]}= {Total_VentasXMes[mes_menor_venta]}") mes_mayor_venta= np.argmax(productoA) print(f"El mes de mayor venta del producto A es {meses[mes_mayor_venta]}= {productoA[mes_mayor_venta]}") mes_mayor_venta= np.argmax(productoB) print(f"El mes de mayor venta del producto B es {meses[mes_mayor_venta]}= {productoB[mes_mayor_venta]}") mes_mayor_venta= np.argmax(productoC) print(f"El mes de mayor venta del producto C es {meses[mes_mayor_venta]}= {productoC[mes_mayor_venta]}") mes_mayor_venta= np.argmax(Total_VentasXMes) print(f" Mes de mayor Ventas Totales {meses[mes_mayor_venta]}= {Total_VentasXMes[mes_mayor_venta]}") """ Paso 4: 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. """ #ACORDATE EL NUMERO DE CORCHETES ME INDICA LA DIMENSIONALIDAD productoA_B_C_2D= np.array([[150,200,250,300,220,210,180,190,230,240,280, 300],[180,210,230,250,270,260,240,250,270,290,310,330],[200,220,240,260,280,300,320,340,360,380,400,420]]) print(productoA_B_C_2D) # Otra forma ventas_matrix = np.array([ventas_A, ventas_B, ventas_C]) print("Cambio de forma") reshaped_array= productoA_B_C_2D.reshape(3, 4, 3) print(reshaped_array) print("Transupuesta") transpuesta_producto= productoA_B_C_2D.T print(transpuesta_producto) print("Invierte Array") meses_invertido= meses[::-1].copy() productoA_invertido = productoA[::-1].copy() productoB_invertido = productoB[::-1].copy() productoC_invertido = productoC[::-1].copy() print(meses_invertido) print(productoA_invertido) print(productoB_invertido) print(productoC_invertido) print("Ventas_Aplanado") Ventas_Aplanado= productoA_B_C_2D.flatten() print(Ventas_Aplanado) """ 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. """ print("Elementos y Conteo") elementos_unico,conteo= np.unique(Ventas_Aplanado, return_counts=True ) print("Elementos unicos", elementos_unico) print("Conteo", conteo) """ **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 """ ventas_primer_Trimestre= np.array(Total_VentasXMes[0:3]) print("Ventas totales primer trimestre ", ventas_primer_Trimestre) ventas_mayor_cond= Total_VentasXMes>800 print(meses[ventas_mayor_cond]) print("Seleccion avanzada") par = [0, 2, 4, 6, 8, 10] ventas_par_seleccionados = productoA_B_C_2D[:, par] print("Ventas en meses seleccionados:\n", ventas_par_seleccionados) ```Consola:     Media de Producto Media del producto A es: 229.16666666666666 Media del producto B es: 257.5 Media del producto A es: 310.0 Suma de Producto Suma del producto A es: 2750 Suma del producto B es: 3090 Suma del producto C es: 3720 Total de Ventas del mes Enero = 530 Total de Ventas del mes Febrero = 630 Total de Ventas del mes Marzo = 720 Total de Ventas del mes Abril = 810 Total de Ventas del mes Mayo = 770 Total de Ventas del mes Junio = 770 Total de Ventas del mes Julio = 740 Total de Ventas del mes Agosto = 780 Total de Ventas del mes Septiembre = 860 Total de Ventas del mes Octubre = 910 Total de Ventas del mes Noviembre = 990 Total de Ventas del mes Diciembre = 1050 \['Enero' 'Febrero' 'Marzo' 'Abril' 'Mayo' 'Junio' 'Julio' 'Agosto' 'Septiembre' 'Octubre' 'Noviembre' 'Diciembre'] \[ 530 630 720 810 770 770 740 780 860 910 990 1050] Media por producto A, B y C---> \[229.16666667 257.5 310. ] El mes de peor venta del producto A es Enero= 150 El mes de peor venta del producto B es Enero= 180 El mes de peor venta del producto C es Enero= 200 Mes de menor Ventas Totales Enero= 530 El mes de mayor venta del producto A es Abril= 300 El mes de mayor venta del producto B es Diciembre= 330 El mes de mayor venta del producto C es Diciembre= 420 Mes de mayor Ventas Totales Diciembre= 1050 \[\[150 200 250 300 220 210 180 190 230 240 280 300] \[180 210 230 250 270 260 240 250 270 290 310 330] \[200 220 240 260 280 300 320 340 360 380 400 420]] Cambio de forma \[\[\[150 200 250] \[300 220 210] \[180 190 230] \[240 280 300]] \[\[180 210 230] \[250 270 260] \[240 250 270] \[290 310 330]] \[\[200 220 240] \[260 280 300] \[320 340 360] \[380 400 420]]] Transupuesta \[\[150 180 200] \[200 210 220] \[250 230 240] \[300 250 260] \[220 270 280] \[210 260 300] \[180 240 320] \[190 250 340] \[230 270 360] \[240 290 380] \[280 310 400] \[300 330 420]] Invierte Array \['Diciembre' 'Noviembre' 'Octubre' 'Septiembre' 'Agosto' 'Julio' 'Junio' 'Mayo' 'Abril' 'Marzo' 'Febrero' 'Enero'] \[300 280 240 230 190 180 210 220 300 250 200 150] \[330 310 290 270 250 240 260 270 250 230 210 180] \[420 400 380 360 340 320 300 280 260 240 220 200] Ventas\_Aplanado \[150 200 250 300 220 210 180 190 230 240 280 300 180 210 230 250 270 260 240 250 270 290 310 330 200 220 240 260 280 300 320 340 360 380 400 420] Elementos y Conteo Elementos unicos \[150 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 360 380 400 420] Conteo \[1 2 1 2 2 2 2 3 3 2 2 2 1 3 1 1 1 1 1 1 1 1] Ventas totales primer trimestre \[530 630 720] \['Abril' 'Septiembre' 'Octubre' 'Noviembre' 'Diciembre'] Seleccion avanzada Ventas en meses seleccionados: \[\[150 250 220 180 230 280] \[180 230 270 240 270 310] \[200 240 280 320 360 400]]
Estoy algo oxidado pero así es como me quedó. <https://colab.research.google.com/drive/1FFenpGwp5R-Sn0hde_SVIYVZafC17qcQ?usp=sharing>
```python import numpy as np import matplotlib.pyplot as plt ``````python months = 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]) ``````python # suma total y promedio total_A = np.sum(product_A) total_B = np.sum(product_B) total_C = np.sum(product_C) print("Rendimiento total anual:") print(f"Producto A: {total_A}") print(f"Producto B: {total_B}") print(f"Producto C: {total_C}") average_A = np.mean(product_A) average_B = np.mean(product_B) average_C = np.mean(product_C) print("\nRendimiento promedio mensual:") print(f"Producto A: {average_A}") print(f"Producto B: {average_B}") print(f"Producto C: {average_C}") ``````python plt.figure(figsize=(10, 6)) plt.plot(months, product_A, marker='o', label='Producto A') plt.plot(months, product_B, marker='s', label='Producto B') plt.plot(months, product_C, marker='^', label='Producto C') plt.xlabel('Meses') plt.ylabel('Ventas') plt.title('Rendimiento mensual de los productos en el año') plt.legend() plt.grid(True) plt.xticks(rotation=45) plt.tight_layout() plt.show() ``````python product_total = product_A + product_B + product_C plt.figure(figsize=(10, 6)) plt.plot(months, product_total, marker='o', label='Total de Productos') plt.xlabel('Meses') plt.ylabel('Ventas Totales') plt.title('Rendimiento mensual total de los productos en el año') plt.legend() plt.grid(True) plt.xticks(rotation=45) plt.tight_layout() plt.show() print(product_total) ```
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
Puntos principales del analisis ![](https://static.platzi.com/media/user_upload/image-da89d66b-12cf-464d-abfb-ffd1d4409900.jpg) ![](https://static.platzi.com/media/user_upload/image-03dfcc4b-5767-4195-9c5a-a6708ac31e4c.jpg)
Les comparto mi solución para el punto 6, indexación booleana: ventas\_sup = total\_ventas > 800print(ventas\_sup,'\n') print(f'Meses que superan los $800: ')for i in np.arange(len(ventas\_sup)):  if ventas\_sup\[i] == True:    print(f'{meses\[i]}')```python ventas_sup = total_ventas > 800 print(ventas_sup,'\n') print(f'Meses que superan los $800: ') for i in np.arange(len(ventas_sup)): if ventas_sup[i] == True: print(f'{meses[i]}') ```
Mi solución: Paso 1 ```js # Paso 1: Crear arrays con datos de ventas mensuales import numpy as np meses = 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]) ```
Las instrucciones para realizar el ejercicio practico estan en la seccion de "Resumen" Pueden ir alli e intentar hacerlo por si mismos, y si no pueden descarguen el codigo de la seccion "Recursos"
## Comparto mis soluciones: ![](https://static.platzi.com/media/user_upload/image-a404974e-bea1-4b10-b0d0-e3d04c2b30f6.jpg) ![](https://static.platzi.com/media/user_upload/image-3805e168-bf73-45df-837b-aa7dd6acca0f.jpg) ![](https://static.platzi.com/media/user_upload/image-56e16841-0796-45f9-90ad-340859432156.jpg) ![](https://static.platzi.com/media/user_upload/image-622345bd-3152-4ae5-8762-0dac89c9de62.jpg) ![](https://static.platzi.com/media/user_upload/image-70fb2e90-7053-406c-8017-35f1f22a27d1.jpg) ![](https://static.platzi.com/media/user_upload/image-65a617db-aa5d-4f11-8472-b9461e6c2b6f.jpg)
Mi código: ```js import numpy as np #Step 1: Create the data, Create arrays with the monthly sales data for three products. months = 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ásicas def media(array): return round(np.mean(array),4); def suma(array): return round(np.sum(array),4); print("Media de ventas de producto A: ", media(product_A)); print("suma de ventas de producto A: ", suma(product_A)); print("Media de ventas de producto B: ", media(product_B)); print("suma de ventas de producto B: ", suma(product_B)); print("Media de ventas de producto C: ", media(product_C)); print("suma de ventas de producto C: ", suma(product_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. total_sales = product_A + product_B + product_C; print("Total de ventas por mes: ", total_sales); # Promedio de ventas por producto: Calcula el promedio de ventas por producto. def average(array): return round(np.mean(array),4); print("Promedio de ventas de producto A: ", average(product_A)); print("Promedio de ventas de producto B: ", average(product_B)); print("Promedio de ventas de producto C: ", average(product_C)); # 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. max_sales_month = months[np.argmax(total_sales)]; min_sales_month = months[np.argmin(total_sales)]; print("Mes con mayor ventas: ", max_sales_month); print("Mes con menor ventas: ", min_sales_month); #Paso 4: Operaciones Avanzadas con NumPy # Reshape y transposicion #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). sales_matrix = np.array([product_A, product_B, product_C]); print(sales_matrix); reshaped_sales = sales_matrix.reshape(3,4,3); print("Matriz de ventas: \r\n", sales_matrix); # Transpone la matriz de ventas para que las filas se conviertan en columnas. transposed_sales = sales_matrix.T; print("Matriz de ventas transpuesta: \r\n", transposed_sales); # Invertir arrays: Invierte las ventas de cada producto en orden de meses. reversed_product_A = product_A[::-1]; reversed_product_B = product_B[::-1]; reversed_product_C = product_C[::-1]; print("Ventas invertidas de producto A: ", reversed_product_A); print("Ventas invertidas de producto B: ", reversed_product_B); print("Ventas invertidas de producto C: ", reversed_product_C); # Aplanar la matriz: Convierte la matriz de ventas a un array unidimensional. flattened_sales = sales_matrix.flatten(); print("Ventas aplanadas: ", flattened_sales); # 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. unique_elements, counts = np.unique(flattened_sales, return_counts=True); print("Elementos únicos en ventas: ", unique_elements); print("Conteo de elementos únicos: ", counts); # Paso 6: Indexación y Slicing # Ventas del primer trimestre: Extrae las ventas de los tres primeros meses del año. first_quarter_sales = total_sales[:3]; print("Ventas del primer trimestre: ", first_quarter_sales); # Indexación booleana: Selecciona los meses donde el total de ventas de los tres productos supere los 800. high_sales_months = months[total_sales > 800]; print("Meses con ventas superiores a 800: ", high_sales_months); #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. even_months = [1,3,5,7,9,11]; even_sales = total_sales[even_months]; print("Ventas de meses pares: ", even_sales); ```
**Caso Práctico de Análisis de Datos** ```js import numpy as np meses = 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 2 #PRODUCTO A ventas_A_media = np.mean(ventas_A) print(f"media de ventas producto A: {ventas_A_media}") sum_ventas_A = np.sum(ventas_A) print(f"Suma de ventas Producto A: {sum_ventas_A}") #PRODUCTO B ventas_B_media = np.mean(ventas_B) print(f"media de ventas producto B: {ventas_B_media}") sum_ventas_B = np.sum(ventas_B) print(f"Suma de ventas Producto B: {sum_ventas_B}") #PRODUCTO C ventas_C_media = np.mean(ventas_C) print(f"media de ventas producto C: {ventas_C_media}") sum_ventas_C = np.sum(ventas_C) print(f"Suma de ventas Producto C: {sum_ventas_C}") #PASO 3: MANIPULACIÓN Y ANÁLISIS DE DATOS #TOTAL DE VENTAS POR MES total_ventas_mes = ventas_A + ventas_B + ventas_C print(f"ventas por mes: {total_ventas_mes}") #promedio de ventas por producto promedio_ventas_producto = np.array([ventas_A_media,ventas_B_media,ventas_C_media]) print(f"promedio de ventas por producto : {promedio_ventas_producto}") #MES CON MAYOR NUMERO DE VENTAS mes_mayor_numero_ventas = np.argmax(total_ventas_mes) print(f"El mes con mayor numero de ventas es {meses[np.argmax(total_ventas_mes)]}") #MES CON MENOR NUMEROD DE VENTAS mes_menor_numero_ventas = meses[np.argmin(total_ventas_mes)] print(f"El mes con menor numero de ventas es {mes_menor_numero_ventas}") #RESHAPE Y TRANSPOSICIÓN matriz = np.array([ventas_A,ventas_B,ventas_C]) print(matriz) matriz_reshape = matriz.reshape(3,4,3) print(f"matriz en reshape es : {matriz_reshape}") #Invertir los arrays inv_arrays = matriz.T print(inv_arrays) #APLANAR ARRAYS flatten_array = matriz.flatten() print(flatten_array) #ANÁLISIS DE ELEMENTOS ÚNICOS ventas_concatenadas = np.concatenate((ventas_A,ventas_B,ventas_C)) unique_elements,counts = np.unique(ventas_concatenadas, return_counts= True) print(f"Los elementos unicos son : {unique_elements} y las veces que aparecen son : {counts}") #INDEXACIÓN Y SLICING ventas_primer_trimestre = np.array([ventas_A[:3],ventas_B[:3],ventas_C[:3]]) print(f"Las ventas del primer trimestre son: {ventas_primer_trimestre}") ventas_800 = meses[total_ventas_mes > 800] print(f"Los meses donde sus ventas son mayores a 800 son: {ventas_800}") indices = [1,3,5,7,9,11] vetnas_meses_pares = np.array([ventas_A[indices],ventas_B[indices],ventas_C[indices]]) print(f"Las ventas de los meses pares son: {vetnas_meses_pares}") ```i
***Promedio de Ventas por trimestre:*** ![](https://static.platzi.com/media/user_upload/code-8c337b45-04e8-4eb1-9b1b-487ad9fb97e4.jpg)
Para los que tampocio encontraron el ejercicio ---> '''python3 import numpy as np months = 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]) '''
Mi solución al ejercicio 2: ```js import numpy as np # PROMEDIO TEMPERATURA POR CIUDADES def calcular_promedio_ciudades(temperatura, ciudades): promedios = np.mean(temperatura, axis=1) for i, promedio in enumerate(promedios): print(f"El PROMEDIO DE LA CIUDAD {ciudades[i]} es: {promedio:.2f}°C") print("\n") return promedios # PROMEDIO DE TEMPERATURA POR DÍAS def promedio_temperatura_por_dia(temperatura, dias): promedio_temperatura_por_dia_semana = np.mean(temperatura, axis=0) for i, promedio in enumerate(promedio_temperatura_por_dia_semana): print(f"EL promedio de la temperatura del día {dias[i]} es de: {promedio:.2f}°C") print("\n") return promedio_temperatura_por_dia_semana # DÍAS MÁS CÁLIDO Y MÁS FRÍO def indice_alto_indice_bajo(promedio, dias): indice_alto_dia = np.argmax(promedio) indice_bajo_dia = np.argmin(promedio) print(f"El día más cálido de la semana es {dias[indice_alto_dia]} con un promedio de {promedio[indice_alto_dia]:.2f}°C") print(f"El día más frío de la semana es {dias[indice_bajo_dia]} con un promedio de {promedio[indice_bajo_dia]:.2f}°C") print("\n") # PROMEDIO TEMPERATURA DÍA JUEVES def promedio_jueves(temperatura, ciudad): dia_semana = temperatura[:, 3] # Jueves es la columna 3 ciudad_mayor_temperatura_jueves = np.argmax(dia_semana) print(f"La ciudad con mayor temperatura el día jueves es {ciudad[ciudad_mayor_temperatura_jueves]} con una temperatura de {dia_semana[ciudad_mayor_temperatura_jueves]}°C") print("\n") def main(): # Arrays para los nombres de las ciudades y los días de la semana ciudades = np.array(["Ciudad 1", "Ciudad 2", "Ciudad 3"]) dias = np.array(["Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"]) # Array de temperaturas diarias (en grados Celsius) para tres ciudades durante la semana # Las filas representan las ciudades y las columnas representan los días temperaturas = np.array([ [15, 16, 14, 18, 17, 20, 19], # Ciudad 1 [22, 21, 19, 23, 25, 24, 26], # Ciudad 2 [10, 11, 13, 14, 12, 15, 16] # Ciudad 3 ]) # Promedio por ciudades calcular_promedio_ciudades(temperaturas, ciudades) # Promedio de temperatura por día promedios_dias = promedio_temperatura_por_dia(temperaturas, dias) # Día más cálido y más frío indice_alto_indice_bajo(promedios_dias, dias) # Mayor temperatura el jueves promedio_jueves(temperaturas, ciudades) if __name__ == "__main__": main() ```import numpy as np *# PROMEDIO TEMPERATURA POR CIUDADES*def calcular\_promedio\_ciudades(temperatura, ciudades): promedios = np.mean(temperatura, axis=1) for i, promedio in enumerate(promedios): print(f"El PROMEDIO DE LA CIUDAD {ciudades\[i]} es: {promedio:.2f}°C") print("\n") return promedios *# PROMEDIO DE TEMPERATURA POR DÍAS*def promedio\_temperatura\_por\_dia(temperatura, dias): promedio\_temperatura\_por\_dia\_semana = np.mean(temperatura, axis=0) for i, promedio in enumerate(promedio\_temperatura\_por\_dia\_semana): print(f"EL promedio de la temperatura del día {dias\[i]} es de: {promedio:.2f}°C") print("\n") return promedio\_temperatura\_por\_dia\_semana *# DÍAS MÁS CÁLIDO Y MÁS FRÍO*def indice\_alto\_indice\_bajo(promedio, dias): indice\_alto\_dia = np.argmax(promedio) indice\_bajo\_dia = np.argmin(promedio) print(f"El día más cálido de la semana es {dias\[indice\_alto\_dia]} con un promedio de {promedio\[indice\_alto\_dia]:.2f}°C") print(f"El día más frío de la semana es {dias\[indice\_bajo\_dia]} con un promedio de {promedio\[indice\_bajo\_dia]:.2f}°C") print("\n") *# PROMEDIO TEMPERATURA DÍA JUEVES*def promedio\_jueves(temperatura, ciudad): dia\_semana = temperatura\[:, 3] *# Jueves es la columna 3* ciudad\_mayor\_temperatura\_jueves = np.argmax(dia\_semana) print(f"La ciudad con mayor temperatura el día jueves es {ciudad\[ciudad\_mayor\_temperatura\_jueves]} con una temperatura de {dia\_semana\[ciudad\_mayor\_temperatura\_jueves]}°C") print("\n") def main(): *# Arrays para los nombres de las ciudades y los días de la semana* ciudades = np.array(\["Ciudad 1", "Ciudad 2", "Ciudad 3"]) dias = np.array(\["Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"]) *# Array de temperaturas diarias (en grados Celsius) para tres ciudades durante la semana* *# Las filas representan las ciudades y las columnas representan los días* temperaturas = np.array(\[ \[15, 16, 14, 18, 17, 20, 19], *# Ciudad 1* \[22, 21, 19, 23, 25, 24, 26], *# Ciudad 2* \[10, 11, 13, 14, 12, 15, 16] *# Ciudad 3* ]) *# Promedio por ciudades* calcular\_promedio\_ciudades(temperaturas, ciudades) *# Promedio de temperatura por día* promedios\_dias = promedio\_temperatura\_por\_dia(temperaturas, dias) *# Día más cálido y más frío* indice\_alto\_indice\_bajo(promedios\_dias, dias) *# Mayor temperatura el jueves* promedio\_jueves(temperaturas, ciudades) if \_\_name\_\_ == "\_\_main\_\_": main()
```js import numpy as np meses = 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]) #ventas cada producto total total_A = np.sum(ventas_A) total_B = np.sum(ventas_B) total_C = np.sum(ventas_B) print(f'ventas totales producto a: {total_A}') print(f'ventas totales producto b: {total_B}') print(f'ventas totales producto c: {total_C}') #venta mes meses_A = np.column_stack((meses, ventas_A)) meses_B = np.column_stack((meses, ventas_B)) meses_C = np.column_stack((meses, ventas_C)) print(meses_A) print(meses_B) print(meses_C) ```
```js months = np.array(["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Nomviembre", "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]) ```months = np.array(\["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Nomviembre", "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])
QUE BUENO CLASE, APRENDI Y PRACTIQUE MUCHO 😊 <https://github.com/iecgerman/python-numpy-pandas/blob/master/clase09.ipynb>
No entiendo porque no me invirtió mi ejemplo de ventas\_inverted y porque si me invirtio la matrix de pantalones en pantalones\_inverted, anexo pantallazos ![](https://static.platzi.com/media/user_upload/image-bb10453a-a330-46f2-be53-79ea4c4a5fbb.jpg) ![](https://static.platzi.com/media/user_upload/image-c5a00eed-2781-436f-9cea-798883116423.jpg)
![](https://static.platzi.com/media/user_upload/image-ddc0de70-10ff-4073-93d8-fb5b070c958f.jpg)
Lo que hice en el paso dos fue redondear los promedios a dos decimales para que sean más legibles. ![](https://static.platzi.com/media/user_upload/image-1cca2527-8e96-4834-9877-1185d6be1a36.jpg)
Yo realicé el ejercicio en mi entorno de trabajo, Dynamo BIM para Revit. Si algún arquitecto, ingeniero o alguien que use ese entorno de trabajo les dejo mi ejercicio.
Aqui comparto mi caso practico!! <https://colab.research.google.com/drive/1ctT3QmSuSRJxL8F5m3CRVE_L3H2wq4WR#scrollTo=p3uu0-vsZvVT>