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

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.