La solicitud

De Laura Bennett, Directora de Finanzas
Tu objetivo
Asigna a result un diccionario con las claves 'total' (suma de orders, un int), 'running' (el total acumulado, np.cumsum, como una lista de 14 ints), 'mean' y 'median' (de orders, redondeadas a 2), 'std' y 'var' (np.std y np.var con sus ajustes por defecto, redondeadas a 2) y 'growth_index' (los factores de crecimiento mes a mes de monthly (cada mes dividido entre el mes anterior), compuestos con np.cumprod, redondeados a 3, como una lista de 5 floats).
- Guarda un dict en
resultpendiente
Tu código
Cargando el editor…
Solución de referencia
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Laura, y por qué
La lección
Totales y totales acumulados
sum da un número; cumsum da el total hasta ahora en cada posición:
orders.sum() # 398
np.cumsum(orders) # [23, 47, 64, 86, ..., 289, 340, 398]
El total acumulado es lo que muestra una línea de «acumulado del mes» en un panel. Su último valor siempre es igual a la suma simple, lo que sirve de comprobación rápida. También es fácil de leer: tras la primera semana (posición 7) la tienda iba por 152 pedidos; el fin de semana del Black Friday añadió 165 él solo.
Media, mediana y dispersión
np.mean(orders) # 28.43
np.median(orders) # 22.5
np.std(orders) # 14.23
np.var(orders) # 202.39
La media suma todo y divide entre 14. La mediana es el valor central una vez ordenado (con una cantidad par, el promedio de los dos centrales). Aquí discrepan mucho: tres días enormes de Black Friday arrastran la media hasta 28.43, mientras que la mediana, 22.5, sigue describiendo un día normal. Cuando hay unos pocos valores extremos en los datos, informa la mediana como el valor «típico».
La varianza es la distancia media al cuadrado respecto a la media, y la desviación estándar es su
raíz cuadrada, en las mismas unidades que los datos: los pedidos diarios suelen estar a unos 14 de la
media. NumPy divide entre n por defecto. pandas divide entre n - 1 (la versión muestral), así que
pd.Series(orders).std() da 14.76. Pasa ddof=1 a NumPy si necesitas que coincidan.
Componer el crecimiento con cumprod
cumprod multiplica sobre la marcha. Eso lo convierte en la herramienta para componer tasas de
crecimiento:
monthly = np.array([296, 235, 326, 318, 352, 352])
growth = monthly[1:] / monthly[:-1] # [0.794, 1.387, 0.975, 1.107, 1.0]
np.cumprod(growth) # [0.794, 1.101, 1.074, 1.189, 1.189]
Febrero bajó un 21% respecto a enero, marzo subió un 39% respecto a febrero. Compuesto, marzo queda un 10% por encima de enero y junio un 19% por encima, exactamente 352 / 296. Sumar los cambios porcentuales en lugar de multiplicarlos daría la respuesta equivocada.
Errores comunes
- Comparar
np.stdcon el.std()de pandas y pensar que uno está roto. Usan divisores distintos. - Sumar tasas de crecimiento en lugar de multiplicar factores.
- Informar la media como «un día típico» cuando unos pocos días grandes la sesgan.
- Dividir al revés (
monthly[:-1] / monthly[1:]), lo que convierte el crecimiento en descenso.
¡Linterna encendida!
Practicaste: numpycumsumcumprodmean medianstd var
- Resuelto
- Sin pistas
- Al primer intento
