La solicitud

De Daniel Foster, Gerente de Producto Móvil
Tu objetivo
El eje y del gráfico empieza en 2% (0.02), no en cero. Asigna a result un diccionario con "looks": cuántas veces más alta se dibuja la barra de desktop que la de móvil, (desktop - 0.02) / (mobile - 0.02), y "real": la razón real entre las dos tasas de conversión, desktop / mobile. Usa la tasa de conversión (proporción de sesiones con converted True) por dispositivo de web_sessions y redondea ambos a 2 decimales.
- Usa el DataFrame
web_sessionspendiente - Guarda un dict en
resultpendiente
The chart from the deck. Look at where the y axis begins.
Ver los números
| conversion_rate | |
|---|---|
| desktop | 3.9% |
| tablet | 2.8% |
| mobile | 2.4% |
Tu código
Cargando el editor…
Solución de referencia
| session_id | customer_id | started_at | device | source |
|---|---|---|---|---|
| 1 | NaN | 2023-01-01 23:02:24 | mobile | paid |
| 2 | 18 | 2023-01-01 15:07:49 | desktop | paid |
| 3 | NaN | 2023-01-01 16:55:46 | desktop | direct |
| 4 | NaN | 2023-01-01 12:43:28 | mobile | organic |
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Daniel, y por qué
Drawn from zero, each bar's length is proportional to its rate: desktop is about 1.6 times mobile.
Ver los números
| conversion_rate | |
|---|---|
| desktop | 3.9% |
| tablet | 2.8% |
| mobile | 2.4% |
DataFrames
Cargados como DataFrames de pandas, junto con pd y np.
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 |
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 |
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 |
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 |
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
Las barras se leen por su longitud
Cuando las personas miran un gráfico de barras, comparan qué tan largas son. Eso solo funciona si todas las barras parten del mismo lugar, y ese lugar es el cero. Así una barra el doble de larga significa un valor el doble de grande, que es justo lo que supone el ojo.
Si cortas el eje en 2%, cada barra pierde su primer 2%. Lo que queda no es el valor sino el valor menos 2%, y la razón entre dos de esos restos puede ser cualquier cosa.
Medir la distorsión
La tasa de conversión es la proporción de sesiones que terminaron en un pedido. converted es True
o False, y la media de una columna de True/False es la proporción de Trues:
rates = web_sessions.groupby("device")["converted"].mean()
# desktop 0.0387, tablet 0.0281, mobile 0.0241
La razón real es desktop / mobile. La razón dibujada es (desktop - 0.02) / (mobile - 0.02),
porque solo se dibuja la parte por encima del inicio del eje. Cuanto más cerca está el valor menor
del inicio del eje, más extrema se vuelve la razón dibujada: sube el inicio a 2.2% y los mismos
datos se ven casi ocho veces más altos.
¿La diferencia es real?
Sí. Desktop convierte mejor que móvil en todas las fuentes de tráfico de estos datos, y 40,000 sesiones hacen que una diferencia de 1.5 puntos sea mucho mayor que el azar. El problema del gráfico no es la dirección, es el tamaño. “Desktop convierte 1.6 veces más que móvil” es cierto. “Varias veces mejor” es lo que inventó el eje. Una decisión de presupuesto basada en la segunda frase está basada en el eje.
Cuándo un eje distinto de cero está bien
Los gráficos de líneas se leen por la pendiente y la posición, no por la longitud, así que un gráfico de líneas de ingresos diarios no necesita empezar en cero, y forzarlo puede aplanar cambios reales. La regla es para barras y áreas: todo aquello cuya longitud o área rellena sea el mensaje debe empezar en cero.
Errores comunes
- Confiar en el eje por defecto. Algunas herramientas eligen el rango del eje a partir de los datos. Revisa dónde empieza el eje de un gráfico de barras antes de pegarlo en una presentación.
- Arreglar el gráfico agregando una nota. Los lectores ven las barras antes de leer la nota al pie. Dibújalo de nuevo desde cero.
- Describir razones como diferencias, o al revés. “1.5 puntos más” y “60% más” son ciertos aquí. Di cuál de los dos quieres decir.
- Comparar tasas sin los tamaños que hay detrás. Una tasa de 300 sesiones es mucho más ruidosa que una de 20,000. El capítulo 3 explica qué tan segura es una tasa.
¡Linterna encendida!
Practicaste: truncated axisbar chartconversion ratemisleading charts
- Resuelto
- Sin pistas
- Al primer intento
