La solicitud

De Laura Bennett, Directora de Finanzas
Tu objetivo
A partir de booked (pedidos contabilizados con revenue = ventas netas menos reembolsos, construido en el código inicial), asigna a result un DataFrame con una fila por año de adquisición y las columnas first_year (año del primer pedido contabilizado del cliente), customers (número de clientes adquiridos ese año), net_revenue (sus ingresos totales de 2023–2025, redondeados a 2) y ltv (net_revenue / customers, redondeado a 2, calculado con el total sin redondear). Ordena por first_year.
- Usa el DataFrame
orderspendiente - Usa el DataFrame
order_itemspendiente - Muestra exactamente
first_yearcustomersnet_revenueltvpendiente
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é
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 |
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 |
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 |
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
Valor de vida, mirando atrás
El valor de vida del cliente (LTV) son los ingresos (o el margen) que un cliente aporta durante toda su relación con el negocio. La versión honesta más simple es el LTV histórico: toma un grupo de clientes, suma todo lo que han gastado hasta ahora y divide entre cuántos son. Sin pronósticos, sin supuestos.
El grupo natural es la cohorte de adquisición: todos los clientes cuyo primer pedido contabilizado cayó en el mismo año. Aquí los ingresos son ingresos netos (valor de línea con descuento menos reembolsos, sin envío), contados sobre todo lo que contienen los datos, de 2023 a 2025.
# first_year customers net_revenue ltv
# 0 2023 574 3564271.36 6209.53
# 1 2024 525 1401056.50 2668.68
# 2 2025 641 721955.12 1126.30
Por qué las cohortes jóvenes siempre se ven peor
La cohorte de 2023 parece cinco veces más valiosa que la de 2025. No lo es, o al menos esta tabla no puede decirlo. Un cliente adquirido en enero de 2023 tuvo tres años para seguir pidiendo; uno adquirido en noviembre de 2025 tuvo unas semanas. El LTV histórico crece con la edad de la cohorte, así que comparar cohortes de edades distintas mide sobre todo tiempo.
La solución es una ventana igual: los ingresos de cada cliente en sus primeros 365 días después del primer pedido. Eso da $3,605.08 para 2023 y $2,142.10 para 2024. La cohorte de 2025 aún no se puede medir, porque la mayoría de sus clientes no ha tenido un año completo. Aún se ve una caída real (los clientes de 2024 gastaron menos en su primer año), pero es de cerca de 40 %, no del 57 % que sugieren los números a la fecha.
Y la primera cohorte es especial
El número de 2023 tiene su propio sesgo. Los datos empiezan el 2023-01-01, así que 152 de los 574 clientes “adquiridos” en 2023 se habían registrado antes y ya eran habituales. Su primer año en los datos no es su primer año como clientes, lo que favorece a la cohorte de 2023.
Errores comunes
- Contar filas en vez de clientes.
sizecuenta pedidos. Usanuniquesobrecustomer_id. - Usar ventas brutas. Los reembolsos y los descuentos son dinero que la tienda nunca se quedó. El LTV en términos de ingresos debe ser ingresos netos, y la versión de margen (siguiente nivel) es aún mejor.
- Un número para todos. Un único LTV de toda la vida mezcla cohortes viejas y jóvenes y cambia cada mes aunque nada cambie en los clientes.
Nota de entrevista
“Nuestro LTV baja en las cohortes más nuevas, ¿qué revisas primero?” La respuesta esperada: si las cohortes se han observado durante el mismo tiempo. Luego compara una ventana igual, como los primeros 12 meses.
¡Linterna encendida!
Practicaste: ltvhistoric ltvcohortnet revenuegroupby
- Resuelto
- Sin pistas
- Al primer intento
