Ir al contenido
wannacode

Describir los datos

En resumen: La estadística descriptiva dice dónde está el centro de los datos (media, mediana, valor más frecuente) y cuánto se dispersan (desviación estándar, percentiles, rango intercuartílico).

Problema

«El cliente promedio»

La jefa quiere una tarjeta de fidelidad. «El cliente promedio hace 8 pedidos al año. Regalemos algo con el octavo pedido: así lo recibe todo cliente normal.»

Suena razonable. Pero ¿cuántos clientes llegan a un octavo pedido? ¿Y cuántos pedidos hace un cliente normal? La media responde solo una de estas preguntas, y no siempre la que crees.

La idea

Media, mediana, moda

Un número que dice «los pedidos rondan esto» viene en tres tipos:

  • la media: la suma dividida entre la cantidad;
  • la mediana: el número del medio una vez ordenados; la mitad está por debajo y la mitad por encima;
  • la moda: el valor que más se repite.

El valor de los pedidos del año, sin los pedidos cancelados:

Pythondatos: las tablas de la tienda

La media es 10,63 € y la mediana 7,70 €. El pedido más frecuente es de 2,40 €. Tres números para los mismos datos, y el 64,4 % de los pedidos está por debajo de la media.

La razón es la cola: unos pocos pedidos grandes (hasta 78,70 €) suben la media. La mediana no los siente, porque solo mira lo que hay en el medio. La cola ya la viste en el histograma de los pedidos.

mode() devuelve una lista porque varios valores pueden compartir el máximo de repeticiones. Por eso values está redondeado al céntimo: si no, 2.4 y 2.4000000000000004 cuentan como valores distintos.

1. Cinco pedidos: 4 €, 6 €, 7 €, 9 € y 12 €. Entra un sexto, de 500 € (una oficina pide para todo el año). ¿Qué pasa?

La idea

Dispersión: rango y desviación estándar

La media no dice cuánto se diferencian los pedidos entre sí. Dos tiendas con una media de 10 € pueden ser muy distintas: en una todos los pedidos rondan los 10 €, en la otra hay pedidos de 1 € y de 50 €. Eso se llama dispersión.

Pythondatos: las tablas de la tienda

El rango es el mayor menos el menor: 77,90 €. Depende solo de los dos pedidos extremos, y un pedido raro lo cambia.

La desviación estándar (std) es lo lejos de la media que suele estar un pedido. Aquí es 9,43 €: un pedido de 10,63 € ± unos 9 € no tiene nada de raro.

Más precisamente, para curiosos

std es la raíz cuadrada de la media de las distancias al cuadrado respecto a la media. Elevar al cuadrado pesa mucho más las distancias grandes, así que con una cola larga std también crece.

pandas divide entre n − 1, NumPy (np.std) entre n. Con 10 459 pedidos la diferencia está en la cuarta cifra decimal. Con 5 números se nota: np.std(x, ddof=1) da lo mismo que pandas.

La idea

Percentiles y el rango intercuartílico

Un percentil dice por debajo de qué valor está una parte dada de los datos. El percentil 90 es el valor por debajo del cual está el 90 % de los pedidos. quantile los da con una proporción de 0 a 1:

Pythondatos: las tablas de la tienda

El 10 % de los pedidos es de hasta 2,40 € y el 90 % de hasta 22,92 €. Las tres líneas discontinuas son los cuartiles: el percentil 25 (q1, 4,20 €), la mediana (7,70 €) y el 75 (q3, 14,00 €). Dividen los pedidos en cuatro partes iguales.

El 50 % central de los pedidos está entre q1 y q3. Su ancho es el IQR (rango intercuartílico, del inglés interquartile range): 14,00 − 4,20 = 9,80 €. A diferencia del rango, el IQR no se mueve por un solo pedido enorme.

Mira también el gráfico: de la mediana a q3 hay 6,30 €, pero de q1 a la mediana solo 3,50 €. La mitad derecha está estirada: esa es la cola, contada con números.

Pruébalo

El umbral del envío gratis

La tienda dará envío gratis al 10 % más grande de los pedidos. ¿A partir de qué importe? Guarda el umbral en threshold.

Pythondatos: las tablas de la tienda

La idea

describe(), leído hasta el final

describe() de tu primer vistazo a una tabla da todo lo anterior de una vez:

Pythondatos: las tablas de la tienda

Ahora cada fila tiene sentido:

  • count: 10 459 pedidos;
  • mean y std: 10,63 € de media, y suelen estar a unos 9,43 € de ella;
  • min y max: de 0,80 € a 78,70 €;
  • 25%, 50%, 75%: los cuartiles. 50% es la mediana.

Un vistazo rápido para detectar una cola: mean está bastante por encima de 50% (10,63 € frente a 7,70 €), y de 75% a max hay 64,70 €, frente a 3,40 € de min a 25%. La cola está a la derecha.

La idea

«El cliente promedio» no existe

Volvamos a la tarjeta de fidelidad. ¿Cuántos pedidos hace cada cliente en el año? Cuentan todos los pedidos, también los cancelados: el cliente sí pidió.

Pythondatos: las tablas de la tienda

Hay 1390 clientes. De media hacen 8 pedidos, pero la mediana es 4 y el valor más frecuente 2. 224 clientes pidieron una sola vez, y el más fiel tiene 121 pedidos.

El histograma muestra por qué: la mayoría de los clientes está a la izquierda, con 1–5 pedidos, y una larga cola de clientes habituales llega hasta 121. La media (la línea continua) queda entre los dos mundos y no describe bien a nadie. El cliente «con 8 pedidos de media» es un número de un cálculo, no una persona con la que te vayas a cruzar a menudo.

Cuando los datos tienen una cola larga, la mediana te dice el caso normal, y la media sirve para otra cosa: por ejemplo, cuántos pedidos traerán en total 100 clientes nuevos.

La idea

Valores inusuales: la regla del IQR

¿Qué pedidos son inusualmente grandes? Una regla común: todo lo que está a más de 1,5 × IQR por debajo de q1 o por encima de q3 es inusual.

Pythondatos: las tablas de la tienda

La valla superior es 14,00 + 1,5 × 9,80 = 28,70 €, y 609 pedidos la superan. La valla inferior es negativa, así que nada queda por debajo.

La regla solo señala. La decisión es tuya: estos 609 pedidos son reales y aportan cerca del 21 % de los ingresos. Quitas un valor solo cuando es un error comprobado, como un precio sin su coma decimal o un duplicado, como viste en la lección de limpieza.

Pruébalo

Los clientes habituales

¿Qué clientes piden con una frecuencia inusual? Calcula la valla superior de la regla del IQR para los pedidos por cliente (en limit) y guarda en regulars a los clientes que la superan.

Pythondatos: las tablas de la tienda

Ejercicio

¿Un regalo con el octavo pedido?

¿Cuántos pedidos hace el cliente normal? Guárdalo en typical. ¿Y qué proporción de los clientes llega a un octavo pedido? Guarda la proporción (de 0 a 1) en reach.

Pythondatos: las tablas de la tienda

Test

Ponte a prueba

1. El pedido medio es de 10,63 € y la mediana de 7,70 €. ¿Qué dice eso de los pedidos?
2. ¿Qué es el rango intercuartílico (IQR)?
3. describe() da 25% 4.20 para el valor del pedido. ¿Qué significa?
4. La regla del IQR encuentra 609 pedidos por encima de 28,70 €. ¿Qué haces con ellos?

Creado por Ivo Gergov como parte de la campaña de Evo Tech por una educación accesible en programación ·