La solicitud

De Laura Bennett, Directora de Finanzas
Tu objetivo
Construye los ingresos diarios de 2025 a partir de los pedidos completados (ingresos de la línea = quantity × unit_price × (1 − discount_pct / 100)), con un valor por cada día del calendario. Luego calcula una media móvil de 7 días. Asigna a result un diccionario: "busiest_day", la fecha con los mayores ingresos diarios, y "busiest_week_end", la fecha en que la media de 7 días es más alta, ambas como texto "YYYY-MM-DD", y "max_7day", esa media de 7 días más alta, redondeada a 2.
- Usa el DataFrame
orderspendiente - Usa el DataFrame
order_itemspendiente - Guarda un dict en
resultpendiente
One point per day. Single big orders make spikes that say little about the trend.
Ver los números
| revenue | |
|---|---|
| Oct 01 | $7,274 |
| Oct 02 | $2,112 |
| Oct 03 | $4,680 |
| Oct 04 | $2,781 |
| Oct 05 | $3,477 |
| Oct 06 | $2,683 |
| Oct 07 | $3,333 |
| Oct 08 | $6,183 |
| Oct 09 | $9,080 |
| Oct 10 | $13,463 |
| Oct 11 | $2,566 |
| Oct 12 | $4,713 |
| Oct 13 | $6,800 |
| Oct 14 | $9,910 |
| Oct 15 | $6,526 |
| Oct 16 | $3,814 |
| Oct 17 | $8,680 |
| Oct 18 | $7,353 |
| Oct 19 | $1,924 |
| Oct 20 | $2,019 |
| Oct 21 | $6,832 |
| Oct 22 | $3,267 |
| Oct 23 | $1,675 |
| Oct 24 | $6,266 |
| Oct 25 | $12,136 |
| Oct 26 | $6,223 |
| Oct 27 | $6,582 |
| Oct 28 | $5,525 |
| Oct 29 | $5,992 |
| Oct 30 | $3,587 |
| Oct 31 | $7,148 |
| Nov 01 | $13,803 |
| Nov 02 | $9,265 |
| Nov 03 | $8,846 |
| Nov 04 | $4,958 |
| Nov 05 | $6,880 |
| Nov 06 | $6,287 |
| Nov 07 | $6,646 |
| Nov 08 | $5,912 |
| Nov 09 | $7,314 |
| Nov 10 | $13,755 |
| Nov 11 | $6,441 |
| Nov 12 | $10,065 |
| Nov 13 | $5,885 |
| Nov 14 | $5,975 |
| Nov 15 | $16,267 |
| Nov 16 | $8,817 |
| Nov 17 | $10,937 |
| Nov 18 | $15,139 |
| Nov 19 | $6,540 |
| Nov 20 | $12,074 |
| Nov 21 | $10,664 |
| Nov 22 | $6,574 |
| Nov 23 | $14,407 |
| Nov 24 | $5,660 |
| Nov 25 | $4,173 |
| Nov 26 | $4,801 |
| Nov 27 | $11,165 |
| Nov 28 | $15,976 |
| Nov 29 | $19,382 |
| Nov 30 | $17,757 |
| Dec 01 | $23,299 |
| Dec 02 | $7,703 |
| Dec 03 | $6,354 |
| Dec 04 | $13,797 |
| Dec 05 | $8,518 |
| Dec 06 | $13,459 |
| Dec 07 | $15,360 |
| Dec 08 | $11,234 |
| Dec 09 | $3,319 |
| Dec 10 | $9,526 |
| Dec 11 | $11,364 |
| Dec 12 | $9,434 |
| Dec 13 | $22,028 |
| Dec 14 | $8,486 |
| Dec 15 | $7,621 |
| Dec 16 | $16,117 |
| Dec 17 | $13,730 |
| Dec 18 | $6,980 |
| Dec 19 | $6,694 |
| Dec 20 | $14,178 |
| Dec 21 | $9,817 |
| Dec 22 | $6,037 |
| Dec 23 | $5,782 |
| Dec 24 | $5,647 |
| Dec 25 | $1,597 |
| Dec 26 | $6,528 |
| Dec 27 | $5,232 |
| Dec 28 | $6,396 |
| Dec 29 | $1,635 |
| Dec 30 | $3,416 |
| Dec 31 | $7,059 |
Tu código
Cargando el editor…
Solución de referencia
| order_id | customer_id | order_date | status | channel |
|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace |
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é
Each point is the mean of that day and the six before it. The rush builds from mid-November and peaks in the first week of December.
Ver los números
| avg_7day | |
|---|---|
| Oct 01 | $5,824 |
| Oct 02 | $5,354 |
| Oct 03 | $5,506 |
| Oct 04 | $4,601 |
| Oct 05 | $3,973 |
| Oct 06 | $3,771 |
| Oct 07 | $3,763 |
| Oct 08 | $3,607 |
| Oct 09 | $4,602 |
| Oct 10 | $5,857 |
| Oct 11 | $5,826 |
| Oct 12 | $6,003 |
| Oct 13 | $6,591 |
| Oct 14 | $7,531 |
| Oct 15 | $7,579 |
| Oct 16 | $6,827 |
| Oct 17 | $6,144 |
| Oct 18 | $6,828 |
| Oct 19 | $6,429 |
| Oct 20 | $5,746 |
| Oct 21 | $5,307 |
| Oct 22 | $4,841 |
| Oct 23 | $4,536 |
| Oct 24 | $4,191 |
| Oct 25 | $4,874 |
| Oct 26 | $5,488 |
| Oct 27 | $6,140 |
| Oct 28 | $5,953 |
| Oct 29 | $6,343 |
| Oct 30 | $6,616 |
| Oct 31 | $6,742 |
| Nov 01 | $6,980 |
| Nov 02 | $7,415 |
| Nov 03 | $7,738 |
| Nov 04 | $7,657 |
| Nov 05 | $7,784 |
| Nov 06 | $8,169 |
| Nov 07 | $8,098 |
| Nov 08 | $6,971 |
| Nov 09 | $6,692 |
| Nov 10 | $7,393 |
| Nov 11 | $7,605 |
| Nov 12 | $8,060 |
| Nov 13 | $8,003 |
| Nov 14 | $7,907 |
| Nov 15 | $9,386 |
| Nov 16 | $9,601 |
| Nov 17 | $9,198 |
| Nov 18 | $10,441 |
| Nov 19 | $9,937 |
| Nov 20 | $10,821 |
| Nov 21 | $11,491 |
| Nov 22 | $10,107 |
| Nov 23 | $10,905 |
| Nov 24 | $10,151 |
| Nov 25 | $8,585 |
| Nov 26 | $8,336 |
| Nov 27 | $8,206 |
| Nov 28 | $8,965 |
| Nov 29 | $10,795 |
| Nov 30 | $11,273 |
| Dec 01 | $13,793 |
| Dec 02 | $14,298 |
| Dec 03 | $14,519 |
| Dec 04 | $14,895 |
| Dec 05 | $13,830 |
| Dec 06 | $12,984 |
| Dec 07 | $12,641 |
| Dec 08 | $10,918 |
| Dec 09 | $10,291 |
| Dec 10 | $10,745 |
| Dec 11 | $10,397 |
| Dec 12 | $10,528 |
| Dec 13 | $11,752 |
| Dec 14 | $10,770 |
| Dec 15 | $10,254 |
| Dec 16 | $12,082 |
| Dec 17 | $12,683 |
| Dec 18 | $12,057 |
| Dec 19 | $11,665 |
| Dec 20 | $10,544 |
| Dec 21 | $10,734 |
| Dec 22 | $10,508 |
| Dec 23 | $9,031 |
| Dec 24 | $7,876 |
| Dec 25 | $7,107 |
| Dec 26 | $7,084 |
| Dec 27 | $5,806 |
| Dec 28 | $5,317 |
| Dec 29 | $4,688 |
| Dec 30 | $4,350 |
| Dec 31 | $4,552 |
DataFrames
Cargados como DataFrames de pandas, junto con pd y np.
orders12,000 filas · 7 columnas
order_idintegercustomer_idintegerorder_datetimestampstatusvarcharchannelvarcharshipping_feedecimalcoupon_codevarchar
| order_id | customer_id | order_date | status | channel | shipping_fee | coupon_code |
|---|---|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web | 0.00 | NaN |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web | 0.00 | NaN |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace | 4.99 | WELCOME10 |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace | 4.99 | WELCOME10 |
| 1005 | 82 | 2023-01-02 11:43:36 | completed | web | 0.00 | WELCOME10 |
order_items30,338 filas · 6 columnas
order_item_idintegerorder_idintegerproduct_idintegerquantityintegerunit_pricedecimaldiscount_pctdecimal
| order_item_id | order_id | product_id | quantity | unit_price | discount_pct |
|---|---|---|---|---|---|
| 1 | 1001 | 121 | 9 | 31.99 | 0.00 |
| 2 | 1001 | 154 | 3 | 11.99 | 0.00 |
| 3 | 1002 | 154 | 4 | 11.99 | 0.00 |
| 4 | 1002 | 194 | 1 | 149.00 | 0.00 |
| 5 | 1002 | 193 | 2 | 19.99 | 0.00 |
customers2,018 filas · 9 columnas
customer_idintegerfirst_namevarcharlast_namevarcharemailvarcharcityvarcharstatevarcharsignup_datedatesegmentvarcharreferral_sourcevarchar
| customer_id | first_name | last_name | city | state | signup_date | segment | referral_source | |
|---|---|---|---|---|---|---|---|---|
| 1 | Owen | Hudson | owen.hudson@icloud.com | San Francisco | CA | 2022-06-02 | consumer | search |
| 2 | Douglas | Mendoza | dmendoza69@gmail.com | Atlanta | GA | 2022-06-02 | consumer | NaN |
| 3 | Henry | Brooks | hbrooks@lakesidecafe.com | Los Angeles | CA | 2022-06-04 | business | NaN |
| 4 | Brian | Graham | bgraham@bluecedarhomes.com | Seattle | WA | 2022-06-06 | business | |
| 5 | Kyle | Jimenez | kjimenez27@yahoo.com | Indianapolis | IN | 2022-06-07 | consumer | NaN |
products120 filas · 8 columnas
product_idintegernamevarcharcategoryvarcharsubcategoryvarcharunit_pricedecimalunit_costdecimallaunched_ondateis_activeboolean
| product_id | name | category | subcategory | unit_price | unit_cost | launched_on | is_active |
|---|---|---|---|---|---|---|---|
| 101 | Vale Velvet Loveseat | Furniture | Sofas | 1659.00 | NaN | 2023-09-11 | true |
| 102 | Alder Oak Coffee Table | Furniture | Tables | 919.00 | 503.50 | 2024-05-16 | true |
| 103 | Orchard Rattan Dining Chair | Furniture | Chairs | 789.00 | 429.87 | 2023-05-27 | true |
| 104 | Upland Oak Bookcase | Furniture | Storage | 429.00 | 214.70 | 2022-12-20 | true |
| 105 | Avery Leather Bed Frame | Furniture | Beds | 449.00 | 232.70 | 2021-08-31 | true |
returns1,673 filas · 5 columnas
return_idintegerorder_item_idintegerreturned_ondatereasonvarcharrefund_amountdecimal
| return_id | order_item_id | returned_on | reason | refund_amount |
|---|---|---|---|---|
| 1 | 14 | 2023-01-10 | damaged | 83.69 |
| 2 | 42 | 2023-01-10 | wrong_item | 19.99 |
| 3 | 105 | 2023-01-14 | wrong_item | 10.99 |
| 4 | 24 | 2023-01-16 | changed_mind | 26.99 |
| 5 | 126 | 2023-01-16 | late | 20.99 |
employees60 filas · 8 columnas
employee_idintegerfirst_namevarcharlast_namevarchardepartmentvarchartitlevarcharmanager_idintegerhire_datedatesalaryinteger
| employee_id | first_name | last_name | department | title | manager_id | hire_date | salary |
|---|---|---|---|---|---|---|---|
| 1 | Catherine | Hale | Executive | Chief Executive Officer | NaN | 2016-03-01 | 285000 |
| 2 | Robert | Kim | Executive | Chief Operating Officer | 1 | 2017-01-09 | 235000 |
| 3 | Megan | Collins | Sales | Head of Sales | 1 | 2018-04-16 | 172000 |
| 4 | Chloe | Gutierrez | Sales | Account Executive | 3 | 2020-01-21 | 72000 |
| 5 | Frank | Bell | Sales | Account Executive | 3 | 2023-05-21 | 73000 |
web_sessions40,000 filas · 7 columnas
session_idintegercustomer_idintegerstarted_attimestampdevicevarcharsourcevarcharpages_viewedintegerconvertedboolean
| session_id | customer_id | started_at | device | source | pages_viewed | converted |
|---|---|---|---|---|---|---|
| 1 | NaN | 2023-01-01 23:02:24 | mobile | paid | 1 | false |
| 2 | 18 | 2023-01-01 15:07:49 | desktop | paid | 1 | false |
| 3 | NaN | 2023-01-01 16:55:46 | desktop | direct | 7 | false |
| 4 | NaN | 2023-01-01 12:43:28 | mobile | organic | 3 | false |
| 5 | NaN | 2023-01-01 13:06:21 | mobile | social | 2 | false |
marketing_spend3,276 filas · 3 columnas
spend_datedatechannelvarcharamountdecimal
| spend_date | channel | amount |
|---|---|---|
| 2023-01-01 | paid | 492.99 |
| 2023-01-01 | 37.38 | |
| 2023-01-01 | social | 200.53 |
| 2023-01-02 | paid | 709.13 |
| 2023-01-02 | 64.13 |
La lección
Por qué los gráficos diarios tienen ruido
Los ingresos de un día dependen de unas pocas docenas de pedidos. Un cliente empresarial que compra un juego de sofás puede duplicar un martes. Además, los días de semana y los fines de semana son distintos. Si dibujas cada día, la línea zigzaguea tanto que el movimiento real, el crecimiento lento de la temporada de fiestas, se esconde detrás de picos aislados. Los lectores entonces señalan el pico más alto y cuentan una historia sobre él.
De pedidos a días
order_date es una marca de tiempo con hora del día, así que agrupar por ella da un grupo por cada
hora de pedido. resample corta un índice de fechas en periodos del calendario y rellena con cero
los días sin pedidos:
daily = lines.set_index("order_date").resample("D")["revenue"].sum()
len(daily) # 365: one value per day of 2025
"D" son días, "W" semanas, "MS" meses que empiezan el día 1.
Una media móvil de 7 días
rolling(7) desliza una ventana de siete filas a lo largo de la Series. .mean() promedia cada
ventana y la etiqueta con su último día:
smooth = daily.rolling(7).mean()
smooth.head(7) # six NaN, then the mean of Jan 1 to Jan 7
Los primeros seis valores faltan porque todavía no hay siete días. Siete es la ventana habitual para datos diarios de negocio: cada ventana contiene cada día de la semana exactamente una vez, así que el ritmo semanal se cancela y lo que queda es la tendencia.
Leer la línea suavizada
El valor suavizado del 4 de diciembre es el promedio del 28 de noviembre al 4 de diciembre: la semana después de Thanksgiving, con Black Friday, Cyber Monday y sus pedidos con el cupón BFCM25 dentro. Esa es la semana más fuerte de 2025. El día más fuerte, el 1 de diciembre, forma parte de ella, pero un solo día es una señal más débil. Fíjate en que la línea suavizada va retrasada: llega a su pico unos días después de que empieza la temporada, porque cada punto mira hacia atrás una semana.
Errores comunes
- Aplicar rolling sobre filas que no son días. Si faltan los días sin pedidos,
rolling(7)abarca más de una semana. Remuestrea primero para que haya exactamente una fila por día. - Centrar por accidente, o no centrar nunca.
rolling(7, center=True)etiqueta cada ventana con su día central, lo que elimina el retraso pero usa días futuros. Di cuál de los dos muestra tu gráfico. - Suavizar justo lo que te preguntaron. Si la pregunta es “¿qué pasó el Black Friday?”, muestra las barras diarias. Suavizar responde preguntas sobre tendencias.
¡Linterna encendida!
Practicaste: rolling averageresampletime seriessmoothing
- Resuelto
- Sin pistas
- Al primer intento
