Calculadora
Pareto y clasificación ABC
Qué porción de los clientes hace el 80 % de la facturación. La respuesta casi nunca es 20 %, y medio chiste del asunto es que «80/20» es un nombre, no un resultado.
Una fila por cliente, producto o sucursal. Sirve lo que se copia de una planilla.
40 filas leídas · decimal con coma
Ejemplos
Cuarenta productos de /datos/distribuidora-norte. No da 80/20: en un mayorista de almacén la facturación está mucho menos concentrada que en el dicho.
22 de 40 ítems —el 55,0 %— hacen el 80 % del total.
El «80/20» es un nombre, no un resultado: la proporción que junta el 80 % sale de los datos y casi nunca es un quinto.
Clase A
22
55,0 % de los ítems · 81,0 % del total
Concentración (HHI)
0,0418
equivale a 23,9 ítems iguales
Los 4 más grandes
29,4 %
el primero solo: 10,6 %
Gini
0,405
0 = parejo · 1 = todo en uno
Barras: lo que aporta cada ítem, de mayor a menor. Línea: el acumulado. La cruz punteada marca dónde se llega al 80 %.
■ A · hasta el 80 %■ B · del 80 al 95 %■ C · el resto
Clasificación ABC
| # | Ítem | Valor | Parte | Acumulado | Clase |
|---|---|---|---|---|---|
| 1 | Yerba mate 1 kg | 153,60 | 10,6 % | 10,6 % | A |
| 2 | Pañales talle M x40 | 111,70 | 7,7 % | 18,4 % | A |
| 3 | Gaseosa cola 2,25 l | 87,00 | 6,0 % | 24,4 % | A |
| 4 | Cerveza rubia 1 l | 72,30 | 5,0 % | 29,4 % | A |
| 5 | Aceite girasol 900 ml | 66,60 | 4,6 % | 34,0 % | A |
| 6 | Jabón en polvo 800 g | 61,50 | 4,3 % | 38,3 % | A |
| 7 | Aceite mezcla 1,5 l | 53,90 | 3,7 % | 42,0 % | A |
| 8 | Gaseosa lima-limón 2,25 l | 48,90 | 3,4 % | 45,4 % | A |
| 9 | Papel higiénico x4 | 48,20 | 3,3 % | 48,7 % | A |
| 10 | Yerba mate 500 g | 47,30 | 3,3 % | 52,0 % | A |
| 11 | Vino tinto común 1 l | 45,70 | 3,2 % | 55,2 % | A |
| 12 | Shampoo 400 ml | 42,90 | 3,0 % | 58,2 % | A |
| 13 | Azúcar 1 kg | 40,80 | 2,8 % | 61,0 % | A |
| 14 | Arroz largo fino 1 kg | 39,70 | 2,8 % | 63,7 % | A |
| 15 | Vino torrontés 750 ml | 38,80 | 2,7 % | 66,4 % | A |
Se muestran 15 de 40. La fila resaltada es la que cruza el 80 %.
Cómo se lee
- Las clases A, B y C
- A son los que juntan el primer 80 %; B, hasta el 95 %; C, el resto. El ítem que cruza cada corte entra a la clase de arriba: sin él no se llega al 80 %, así que dejarlo afuera haría que la clase A no cumpla su propia definición.
- El índice de Herfindahl
- La suma de los cuadrados de las participaciones. Va de 1/n —todos iguales— a 1 —uno se lleva todo—. Su inversa, 23,9, se lee como «esta cartera se comporta como si tuviera 23,9 ítems de igual tamaño», que es más fácil de explicar que el índice.
- Pareto y Lorenz
- Son la misma curva mirada al revés: Pareto ordena de mayor a menor para hablar de concentración, Lorenz de menor a mayor para hablar de desigualdad. El Gini de acá es el mismo que devuelve la calculadora de Lorenz y Gini.
- Lo que esto no dice
- Que un cliente esté en la clase C no significa que convenga perderlo: puede ser nuevo, estacional o barato de atender. La clasificación ordena por facturación y nada más. Para mirar antigüedad y frecuencia hace falta otra cosa.
Lo mismo en R y en Python
R
# Pareto y clasificación ABC
d <- d[order(-d$valor), ]
d$parte <- d$valor / sum(d$valor)
d$acumulado <- cumsum(d$parte)
# El ítem que CRUZA el 80 % entra a la A: se mira el acumulado anterior.
anterior <- c(0, head(d$acumulado, -1))
d$clase <- ifelse(anterior < 0.80, "A", ifelse(anterior < 0.95, "B", "C"))
sum(d$clase == "A") # cuántos hacen el 80 %
sum(d$parte^2) # Herfindahl
1 / sum(d$parte^2) # equivalentes de ítems igualesPython
# Pareto y clasificación ABC
import numpy as np, pandas as pd
d = d.sort_values("valor", ascending=False).reset_index(drop=True)
d["parte"] = d.valor / d.valor.sum()
d["acumulado"] = d.parte.cumsum()
# El ítem que CRUZA el 80 % entra a la A: se mira el acumulado anterior.
anterior = d.acumulado.shift(1, fill_value=0)
d["clase"] = np.where(anterior < 0.80, "A", np.where(anterior < 0.95, "B", "C"))
(d.clase == "A").sum() # cuántos hacen el 80 %
(d.parte ** 2).sum() # Herfindahl
1 / (d.parte ** 2).sum() # equivalentes de ítems igualesDe dónde sale el 80/20
Vilfredo Pareto observó a fines del siglo XIX que en Italia una porción chica de la población tenía la mayor parte de la tierra, y al ajustar una distribución a esos datos encontró un parámetro cercano a 1,16. Con ese valor exacto —y solo con ese— se cumple que el 20 % de arriba junta el 80 %.
De ahí en adelante el «80/20» se convirtió en una regla que se repite sin medirla. Pero es una propiedad de una distribución con un parámetro, no una ley de las empresas. Una cartera de clientes puede dar 30/80, 12/80 o 45/80, y cada uno de esos números describe un negocio distinto. Por eso esta herramienta no verifica el dicho: lo mide.
Qué decide la clasificación ABC
La clase A son los ítems que juntan el primer 80 % del total; la B, los que llegan hasta el 95 %; la C, el resto. Los cortes son convención, no teoría: en control de inventarios se usan esos tres porque ordenan el esfuerzo de gestión, y nada impide mover el corte si el negocio lo pide.
Hay un detalle que cambia el resultado y suele hacerse mal: el ítem que cruza el 80 % pertenece a la clase A. Si se lo clasifica mirando su propio acumulado, queda en la B y entonces la clase A no llega al 80 %, que es justamente lo que su definición promete. Con pocos ítems la diferencia es grande.
Los índices de concentración
El Herfindahl-Hirschman suma los cuadrados de las participaciones. Su gracia es que su inversa se lee en unidades entendibles: un HHI de 0,05 equivale a veinte ítems de igual tamaño. Las autoridades de competencia lo usan con el índice multiplicado por 10.000, donde por encima de 2.500 un mercado se considera concentrado.
Las razones de concentración —CR1, CR4, CR10— dicen qué porción se llevan el más grande, los cuatro más grandes y los diez más grandes. Son más fáciles de comunicar que el Herfindahl y pierden la información del resto de la cola, así que conviene mirar las dos cosas.
Lo que la concentración no dice
Que un cliente esté en la clase C no significa que convenga perderlo. Puede ser nuevo, puede comprar poco y seguido, puede ser barato de atender o puede ser el que trae a los demás. La clasificación ordena por una sola variable —cuánto facturó— y en un período elegido por quien hace la cuenta.
El riesgo de concentración tampoco se lee del índice solo: cinco clientes que son cinco sucursales de la misma cadena son, para efectos de riesgo, un solo cliente. Antes de interpretar el Herfindahl conviene preguntarse si las filas son realmente independientes.
Cómo está verificado
No hay una función de biblioteca que haga «Pareto»: es aritmética. Así que lo que se compara no es otra implementación de la misma fórmula —que compartiría el error— sino tres cosas que no la comparten. Los acumulados se recalculan con Fraction, sin un solo redondeo, porque los valores de entrada son racionales exactos y entonces se puede saber cuánto error de coma flotante acumuló el camino rápido en vez de suponerlo.
El Herfindahl se contrasta contra la identidad algebraica H = (1 + CV²)/n sobre las participaciones, que no se parece en nada a «sumar los cuadrados»: si el código suma mal, no cierra. La clasificación A/B/C se rehace en Python con un bucle escrito al revés que el de TypeScript. Y el Gini se compara contra su definición —la diferencia absoluta media— calculada con numpy, no contra el atajo de la curva. Son 258 comprobaciones sobre siete familias de casos, entre ellas un solo ítem, todos iguales, uno que se lleva casi todo, ceros, negativos y empates.