1. Faro

Nivel 7 · Desafío final: la hoja mensual de KPI

La solicitud

De Catherine Hale, Directora General

“A partir de enero, la dirección revisa una hoja de KPI al mes. Construye 2025 como la primera edición: el bloque de ingresos, el bloque de clientes y tráfico, el crecimiento frente al año pasado, y una revisión de controles que me diga qué meses rompieron el límite de 7 % de tasa de devolución, sin contar los meses cuyas devoluciones aún no han llegado.”

Tu objetivo

Paso 1 de 4. Bloque de ingresos. Asigna a result un DataFrame con una fila por mes de 2025 (ordenado) y las columnas month, orders (pedidos confirmados distintos), net_sales, refunds, net_revenue (net_sales − refunds), aov (net_sales / orders) y return_rate_pct (refunds × 100 / net_sales), con dinero y tasas redondeados a 2.

  • Usa el DataFrame order_itemspendiente
  • Usa el DataFrame returnspendiente
  • Muestra exactamente month orders net_sales refunds net_revenue aov return_rate_pctpendiente

Paso 1 · 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.

    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 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 4 · 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.

          DataFrames

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

          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
          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
          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
          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
          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

          Una hoja de KPI es una página, no un panel

          Una hoja de KPI es la página que un equipo directivo lee cada mes. Es corta a propósito: la métrica estrella, los pocos números que la impulsan, el crecimiento frente al mismo período del año pasado y los controles con un estado. Todo en ella tiene una definición escrita, y las definiciones no cambian entre ediciones.

          La hoja de Harbor & Pine tiene cuatro bloques, y construyes uno por paso.

          Bloque 1: ingresos

          Pedidos, ventas netas, reembolsos, ingresos netos (la métrica estrella), AOV y tasa de devolución, una fila por mes. Todo sale de una sola tabla de líneas confirmadas y válidas con el reembolso adjunto, así que los números cuadran entre columnas: los ingresos netos son las ventas netas menos los reembolsos, y AOV × pedidos devuelve las ventas netas.

          Bloque 2: clientes y tráfico

          Sesiones, conversiones, tasa de conversión y clientes nuevos. Estos son los impulsores: los ingresos crecen porque más gente visita, más de ella compra, o más de ella es nueva. La tasa de conversión es conversiones entre sesiones del mismo mes, calculada a partir de los totales.

          Bloque 3: crecimiento frente al año pasado

          Harbor & Pine es estacional, así que la columna de crecimiento es interanual, no mes a mes. Pon el crecimiento de pedidos junto al de ingresos: cuando los pedidos crecen y los ingresos no, los pedidos se hicieron más pequeños, y eso merece una frase en la hoja.

          Bloque 4: controles con una regla de madurez

          El control de la tasa de devolución es 7 % de las ventas netas. Un mes solo puede incumplirlo cuando ya llegaron sus devoluciones, lo que tarda hasta 40 días después de que el mes termina. Los meses más jóvenes se listan como no definitivos en vez de juzgarlos pronto, para que los meses más recientes no puedan verse mejor de lo que son.

          Errores comunes

          • Promediar las tasas mensuales para el año. Recalcula las tasas anuales a partir de totales sumados.
          • Crecimiento mes a mes en un negocio estacional. Mide el calendario.
          • Juzgar meses jóvenes. Las métricas con retraso necesitan una fecha “definitiva desde”.
          • Cambiar una definición entre ediciones. Si tiene que cambiar, reexpresa el historial con ella.

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