1. Faro

Nivel 8 · Desafío final: la hoja única de economía de clientes

La solicitud

De Catherine Hale, Directora Ejecutiva

“Para el retiro de planeación quiero una página sobre nuestros clientes: cuántos nos compraron en 2025 y cuántos de ellos eran nuevos, cuánto vale un comprador en un año y si las cuentas empresa de verdad importan tanto como dice Megan.”

Tu objetivo

Paso 1 de 3. Asigna a result un dict de 2025 con tres enteros: "buyers" (clientes distintos con un pedido contabilizado en 2025), "new_customers" (de ellos, clientes cuyo primer pedido contabilizado de toda su historia está en 2025) y "returning_customers" (el resto).

  • Usa el DataFrame orderspendiente
  • Usa el DataFrame order_itemspendiente
  • Guarda un dict en resultpendiente

Paso 1 · tu código

Python

Cargando el editor…

    ResultadoVista previa de orders · presiona Ejecutar para ver el tuyo
    Vista previa de orders
    order_idcustomer_idorder_datestatuschannel
    10011252023-01-01 20:51:19completedweb
    10021562023-01-02 07:58:46completedweb
    1003222023-01-02 10:25:27completedmarketplace
    1004482023-01-02 11:21:51completedmarketplace

    Mote revisa tu resultado

    Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.

    Paso 2 · tu código

    Python

    Cargando el editor…

      ResultadoVista previa de orders · presiona Ejecutar para ver el tuyo
      Vista previa de orders
      order_idcustomer_idorder_datestatuschannel
      10011252023-01-01 20:51:19completedweb
      10021562023-01-02 07:58:46completedweb
      1003222023-01-02 10:25:27completedmarketplace
      1004482023-01-02 11:21:51completedmarketplace

      Mote revisa tu resultado

      Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.

      Paso 3 · tu código

      Python

      Cargando el editor…

        ResultadoVista previa de order_items · presiona Ejecutar para ver el tuyo
        Vista previa de order_items
        order_item_idorder_idproduct_idquantityunit_price
        11001121931.99
        21001154311.99
        31002154411.99
        410021941149.00

        Mote revisa tu resultado

        Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.

        DataFrames

        Cargados como DataFrames de pandas, junto con pd y np.

        orders12,000 filas · 7 columnas
        • order_idinteger
        • customer_idinteger
        • order_datetimestamp
        • statusvarchar
        • channelvarchar
        • shipping_feedecimal
        • coupon_codevarchar
        Primeras 5 filas de orders
        order_idcustomer_idorder_datestatuschannelshipping_feecoupon_code
        10011252023-01-01 20:51:19completedweb0.00NaN
        10021562023-01-02 07:58:46completedweb0.00NaN
        1003222023-01-02 10:25:27completedmarketplace4.99WELCOME10
        1004482023-01-02 11:21:51completedmarketplace4.99WELCOME10
        1005822023-01-02 11:43:36completedweb0.00WELCOME10
        order_items30,338 filas · 6 columnas
        • order_item_idinteger
        • order_idinteger
        • product_idinteger
        • quantityinteger
        • unit_pricedecimal
        • discount_pctdecimal
        Primeras 5 filas de order_items
        order_item_idorder_idproduct_idquantityunit_pricediscount_pct
        11001121931.990.00
        21001154311.990.00
        31002154411.990.00
        410021941149.000.00
        51002193219.990.00
        returns1,673 filas · 5 columnas
        • return_idinteger
        • order_item_idinteger
        • returned_ondate
        • reasonvarchar
        • refund_amountdecimal
        Primeras 5 filas de returns
        return_idorder_item_idreturned_onreasonrefund_amount
        1142023-01-10damaged83.69
        2422023-01-10wrong_item19.99
        31052023-01-14wrong_item10.99
        4242023-01-16changed_mind26.99
        51262023-01-16late20.99
        customers2,018 filas · 9 columnas
        • customer_idinteger
        • first_namevarchar
        • last_namevarchar
        • emailvarchar
        • cityvarchar
        • statevarchar
        • signup_datedate
        • segmentvarchar
        • referral_sourcevarchar
        Primeras 5 filas de customers
        customer_idfirst_namelast_nameemailcitystatesignup_datesegmentreferral_source
        1OwenHudsonowen.hudson@icloud.comSan FranciscoCA2022-06-02consumersearch
        2DouglasMendozadmendoza69@gmail.comAtlantaGA2022-06-02consumerNaN
        3HenryBrookshbrooks@lakesidecafe.comLos AngelesCA2022-06-04businessNaN
        4BrianGrahambgraham@bluecedarhomes.comSeattleWA2022-06-06businesspinterest
        5KyleJimenezkjimenez27@yahoo.comIndianapolisIN2022-06-07consumerNaN
        products120 filas · 8 columnas
        • product_idinteger
        • namevarchar
        • categoryvarchar
        • subcategoryvarchar
        • unit_pricedecimal
        • unit_costdecimal
        • launched_ondate
        • is_activeboolean
        Primeras 5 filas de products
        product_idnamecategorysubcategoryunit_priceunit_costlaunched_onis_active
        101Vale Velvet LoveseatFurnitureSofas1659.00NaN2023-09-11true
        102Alder Oak Coffee TableFurnitureTables919.00503.502024-05-16true
        103Orchard Rattan Dining ChairFurnitureChairs789.00429.872023-05-27true
        104Upland Oak BookcaseFurnitureStorage429.00214.702022-12-20true
        105Avery Leather Bed FrameFurnitureBeds449.00232.702021-08-31true
        employees60 filas · 8 columnas
        • employee_idinteger
        • first_namevarchar
        • last_namevarchar
        • departmentvarchar
        • titlevarchar
        • manager_idinteger
        • hire_datedate
        • salaryinteger
        Primeras 5 filas de employees
        employee_idfirst_namelast_namedepartmenttitlemanager_idhire_datesalary
        1CatherineHaleExecutiveChief Executive OfficerNaN2016-03-01285000
        2RobertKimExecutiveChief Operating Officer12017-01-09235000
        3MeganCollinsSalesHead of Sales12018-04-16172000
        4ChloeGutierrezSalesAccount Executive32020-01-2172000
        5FrankBellSalesAccount Executive32023-05-2173000
        web_sessions40,000 filas · 7 columnas
        • session_idinteger
        • customer_idinteger
        • started_attimestamp
        • devicevarchar
        • sourcevarchar
        • pages_viewedinteger
        • convertedboolean
        Primeras 5 filas de web_sessions
        session_idcustomer_idstarted_atdevicesourcepages_viewedconverted
        1NaN2023-01-01 23:02:24mobilepaid1false
        2182023-01-01 15:07:49desktoppaid1false
        3NaN2023-01-01 16:55:46desktopdirect7false
        4NaN2023-01-01 12:43:28mobileorganic3false
        5NaN2023-01-01 13:06:21mobilesocial2false
        marketing_spend3,276 filas · 3 columnas
        • spend_datedate
        • channelvarchar
        • amountdecimal
        Primeras 5 filas de marketing_spend
        spend_datechannelamount
        2023-01-01paid492.99
        2023-01-01email37.38
        2023-01-01social200.53
        2023-01-02paid709.13
        2023-01-02email64.13

        La lección

        Qué va en una hoja única de clientes

        Un equipo directivo hace las mismas tres preguntas sobre los clientes en cada ciclo de planeación: cuántos atendimos y cuántos eran nuevos, cuánto vale un cliente en un año y qué clientes sostienen el negocio. Cada bloque de este nivel responde una de ellas, y cada uno necesita las definiciones de este capítulo: solo pedidos contabilizados, ingresos netos después de descuentos y reembolsos, y un cliente es nuevo en el año de su primer pedido contabilizado.

        Bloque 1: la base

        Los compradores de 2025 son clientes distintos con un pedido contabilizado ese año. Separarlos en nuevos y recurrentes necesita el primer pedido contabilizado de cada cliente en todos los años, no solo en 2025; de lo contrario todos los compradores de 2025 parecen nuevos. Reporta los conteos, no solo la proporción: 641 clientes nuevos es un número sobre el que se puede construir un plan de marketing.

        Bloque 2: valor por comprador

        Tres totales dan tres razones: AOV (ingresos por pedido), pedidos por comprador e ingresos por comprador. La tercera es el producto de las dos primeras, lo que sirve como verificación cruzada: si tus ingresos por comprador no son iguales al AOV por la frecuencia, uno de los denominadores está mal. Los ingresos por comprador en un año son también el ladrillo del LTV predictivo del nivel 4.

        Bloque 3: segmentos

        Las comparaciones por segmento son métricas de clientes, así que colapsa los pedidos a una fila por cliente antes de agrupar por segmento. Agrupar los pedidos directamente por segmento da ingresos por pedido, que es otra pregunta. Pon la participación de ingresos junto al valor por cliente: un segmento puede valer seis veces más por cliente y aun así ser una minoría de los ingresos, o, como aquí, ser el 15 % de los clientes y más de la mitad de los ingresos.

        Errores comunes

        • Mezclar ventanas. Los bloques 1 y 2 son 2025; el bloque 3 es 2023–2025. Dilo en la diapositiva.
        • Llamar “clientes adquiridos” a todos los compradores. Los compradores recurrentes fueron adquiridos en años anteriores y pertenecen a esas cohortes.
        • Promedios sin conteos. Un valor por cliente significa poco hasta que el lector sabe a cuántos clientes cubre.

        Nota de entrevista

        Las entrevistas de caso suelen terminar con “¿qué le pondrías enfrente a la CEO?”. Tres bloques, cada uno con un número, su definición y una frase de significado, es una buena estructura. Agrega la advertencia que más importa: aquí, que unas pocas cuentas empresa sostienen los ingresos, así que perder una es un riesgo real.

        Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.