Nivel 1 · Cohortes por primer pedido
¿Es nuevo para ti? Lee primero el concepto: La retención se mide por cohorte y a la misma edad
0 de 3
La solicitud

De Jordan Reyes, Directora de Marketing
Tu objetivo
Los pedidos registrados son los que tienen status "completed" o "refunded". Asigna a result un DataFrame con una fila por trimestre del primer pedido registrado de cada cliente y las columnas cohort (el trimestre como texto, como "2023Q1") y new_customers (clientes cuyo primer pedido registrado cae en ese trimestre), ordenado por cohort ascendente, con un índice por defecto 0..n.
- Usa el DataFrame
orderspendiente - Muestra exactamente
cohortnew_customerspendiente - 12 filas, ordenadas como se pidependiente
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 Jordan, 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 |
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 |
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 |
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
Qué es una cohorte
Una cohorte es un grupo de clientes que comparten un punto de partida. Para una tienda, el punto de partida natural es la primera compra: todos los que hicieron su primer pedido de enero a marzo de 2023 forman la cohorte 2023Q1. A partir de ahí sigues a las mismas personas a lo largo del tiempo y preguntas qué proporción volvió.
Las cohortes resuelven el mayor problema de la “tasa de recompra de este año”: los clientes del denominador no son comparables. Quien compró por primera vez en diciembre ha tenido semanas para volver; quien compró por primera vez hace tres años ha tenido años. Agrupar por fecha de inicio compara cosas comparables.
Una fecha por cliente
La cohorte sale de una sola fecha por cliente, su primer pedido registrado:
booked = orders[orders["status"].isin(["completed", "refunded"])]
first = booked.groupby("customer_id")["order_date"].min()
Solo cuentan los pedidos registrados. Un pedido cancelado nunca se pagó, y uno pendiente quizá nunca se pague. Un cliente cuyo primer intento se canceló y cuya primera compra real llegó dos meses después pertenece a la cohorte posterior. Los pedidos reembolsados sí cuentan: el cliente compró, aunque el producto volviera.
Meses o trimestres
Las cohortes mensuales son el estándar de los libros de texto, pero Harbor & Pine gana entre 100 y 250 clientes nuevos por trimestre. Divididas por mes, 22 de las 36 cohortes tienen entre 28 y 42 personas, y sus números de retención saltan solo por ruido. Las cohortes trimestrales son lo bastante grandes para leerlas. pandas convierte una fecha en su trimestre con un periodo:
first.dt.to_period("Q").astype(str) # "2023Q1", "2023Q2", ...
El texto como "2023Q1" se ordena correctamente, lo que mantiene la tabla en orden cronológico.
Leer los tamaños
Mira los tamaños antes que cualquier número de retención. Aquí el cuarto trimestre de cada año trae muchos más clientes que los otros, porque los compradores de fiestas llegan en noviembre y diciembre. Eso importa más adelante: las cohortes de fiestas están llenas de compradores de regalos, que a menudo no vuelven, así que una cohorte grande de Q4 puede bajar la tasa de retención global sin que nada empeore.
La cohorte 2023Q1 es grande por otra razón: 116 de sus 177 clientes se registraron antes de 2023. Los datos empiezan en enero de 2023, así que para ellos “primer pedido en los datos” no es su primer pedido de siempre. Trata esa cohorte como clientes existentes, no nuevos.
Errores comunes
- Usar la fecha de registro. Registrarse no es comprar. Unos 230 clientes nunca hicieron un pedido.
- Usar cualquier estado de pedido. Los primeros pedidos cancelados ponen a las personas en la cohorte equivocada.
- Demasiadas cohortes, demasiado pequeñas. Si una cohorte tiene unas pocas decenas de personas, únelas en trimestres.
¡Linterna encendida!
Practicaste: cohortfirst orderretentionto periodgroupby
- Resuelto
- Sin pistas
- Al primer intento
