Gráfico de Pareto 80/20

Dice la teoría que un gráfico de Pareto nos permite ver que un grupo poco numeroso de elementos afectan a un mucho de los resultados.

Por ejemplo un 20 % de clientes representan un 80 % de las ventas.

Vamos a ver si esto es verdad y cómo podemos hacer un gráfico de Pareto con Power BI.

Anticipo que en Excel son mucho más fáciles de crear, y esperemos que en una próxima actualización o con un visualizador especial sean fáciles de calcular y representar.

También quiero decir que he tomado muchas ideas prestadas de diferentes web, y al final he combinado lo que me parece más interesante para obtener lo que quiero:

Preguntar al Power BI qué % de clientes representan un determinado % de ventas que debo escoger de un segmentador.

Gráfico de Pareto

Partimos del A3ERP Ventas totales detalladas base que pueda obtener de nuestra página de descargas.

Vamos a crear una nueva tabla con

Y ponemos

Clientes = SUMMARIZE(Ventas;Ventas[Cliente];”Ventas cliente”;[EUR])

Esto nos crea una tabla con el total de ventas por cliente, al que podemos dar formato con separador de miles, y ordenamos por Ventas cliente

Añadimos una columna con el total de ventas de todos los clientes.

Ventas Totales = CALCULATE( SUM( Clientes[Ventas cliente] ) ; ALLSELECTED( Clientes) )

Y otra columna con el acumulado de ventas acumuladas de cada fila

Ventas acumuladas = SUMX(FILTER(Clientes; EARLIER(Clientes[Ventas cliente];1)<=Clientes[Ventas cliente]);Clientes[Ventas cliente])

Para más información sobre la función EARLIER os remito a mi entrada Función EARLIER, o sea, esta fila

Solo nos falta añadir una columna con él % de ventas sobre el total

% Ventas s/total = Clientes[Ventas Acumuladas]/Clientes[Ventas Totales]

Y le damos formato porcentaje

Ahora ya podemos hacer el grafico de Pareto

Vamos a Informes, añadimos un gráfico de columnas agrupadas y líneas y le ponemos

Y aparece un gráfico sin orden ni concierto

Hacemos clic en los tres puntos de la parte superior derecha del grafico

Y elegimos ordenar por ventas cliente. Ahora el grafico tiene más sentido

Un primer grupo de clientes, visualmente menos de la mitad, llevan al 60% de las ventas

Porcentaje de clientes que corresponden a un determinado porcentaje de ventas

Queremos ir un poco más lejos: saber la dependencia que tenemos de un grupo de clientes

Un determinado porcentaje de ventas, qué porcentaje de clientes representa.

Añadimos una columna para numerar cada cliente sucesivamente: la posición que el cliente ocupa en la lista

Clientes posición= COUNTROWS(FILTER(Clientes; EARLIER(Clientes[Ventas cliente];1)<Clientes[Ventas cliente]))+1

Otra columna para saber cuántos clientes tenemos en total

Clientes filas = COUNTROWS(Clientes)

Y otra columna para calcular el %

% Posición = Clientes[Clientes posición]/Clientes[Clientes filas]

No olvidemos dar formato porcentaje

Tendremos una tabla con

Si lo ponemos en una visualización en modo tabla con

Y ordenamos por Ventas cliente, tendremos

Es fácil seguir esta tabla y si nos ponemos en la fila del 81 % de las ventas, a la derecha vemos que esto representa el 57 % de los clientes

Seleccionar un porcentaje de ventas y obtener el porcentaje de clientes que las representan

Ahora viene el último paso un poco más complicado. Queremos un segmentador que nos permita indicar un % de ventas y que el Power BI nos responda con él % de clientes que lo representan.

Con Inicio, Especificar datos vamos a crear una tabla como la que sigue

La nombramos a pie de pantalla como % de ventas, Aceptamos

Y cambiamos el campo a tipo de datos número decimal

Cerramos y aplicamos

Ya podemos construir el segmentador con % de ventas

Y obtenemos

Ahora solo nos falta que en la tabla clientes, conste a qué posición del rango de % está cada cliente

Esto lo haremos con una nueva MEDIDA

% Clientes = LOOKUPVALUE(Clientes[% Posición];Clientes[% Ventas s/total];MINX(FILTER(Clientes;Clientes[% Ventas s/total]*100>MAX(‘% Ventas'[% Ventas]));Clientes[% Ventas s/total]))

No olvidemos darle formato porcentaje.

Usamos la función LOOKUPVALUE que es similar al BUSCARV del Excel

Le decimos, devuelve el % de posición:

LOOKUPVALUE(Clientes[% Posición];

Buscando en la columna % ventas s/total:

LOOKUPVALUE(Clientes[% Posición];Clientes[% Ventas s/total]

El valor que este entre el mínimo y el máximo del valor seleccionado en la tabla % Ventas

MINX(FILTER(Clientes;Clientes[% Ventas s/total]*100>MAX(‘% Ventas'[% Ventas]));Clientes[% Ventas s/total]

Ahora añadimos una tarjeta de una sola fila con

Y si seleccionamos un % de ventas en el segmentador, nos responde con el % de clientes que nos llevan a esa suma

Por ejemplo en nuestro caso un 80% de las ventas es una 57,14 % de clientes

Cosa que ya vimos al observar la tabla

Mejoremos el grafico

Por último vamos a añadir Información sobre herramientas para mejorar el grafico

De modo que si nos situamos sobre un cliente vemos

En ese punto llevamos el 81,10% de las ventas lo lleva el 57,14% de los clientes

Resumiendo: en nuestro ejemplo el 80% de las ventas dependen de la mitad de los clientes (57%).

No de un 20 % de clientes….pues mucho mejor para nosotros.

En esta entrada hemos visto conceptos muy interesantes

  • El total acumulado o running total
  • La creación de una tabla de valores
  • La función LOOKUPVALUE, equivalente al BUSCARV de Excel

Espero que os sea de utilidad y si queréis con los botones de la parte inferior podéis compartir

2 comentarios sobre “Gráfico de Pareto 80/20”

  1. hola, soy Víctor

    Con relación como lo puedo vincular a un filtro de fecha que varié según el periodo de tiempo que elija. gracias por tu ayuda

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.