Come creare un grafico di pareto in python (passo dopo passo)
Un grafico di Pareto è un tipo di grafico che mostra le frequenze ordinate delle categorie nonché le frequenze cumulative delle categorie.
Questo tutorial fornisce un esempio passo passo della creazione di un grafico di Pareto in Python.
Passaggio 1: creare i dati
Supponiamo di condurre un sondaggio in cui chiediamo a 350 persone diverse di identificare la loro marca di cereali preferita tra le marche A, B, C, D ed E.
Possiamo creare il seguente DataFrame panda per contenere i risultati del sondaggio:
import pandas as pd #createDataFrame df = pd. DataFrame ({' count ': [97, 140, 58, 6, 17, 32]}) df. index = ['B', 'A', 'C', 'F', 'E', 'D'] #sort DataFrame by count descending df = df. sort_values (by=' count ', ascending= False ) #add column to display cumulative percentage df[' cumperc '] = df[' count ']. cumsum ()/df[' count ']. sum ()*100 #view DataFrame df count cumperc At 140 40.000000 B 97 67.714286 C 58 84.285714 D 32 93.428571 E 17 98.285714 F 6 100.000000
Passaggio 2: crea il grafico di Pareto
Possiamo usare il seguente codice per creare il diagramma di Pareto:
import matplotlib. pyplot as plt
from matplotlib. ticker import PercentFormatter
#define aesthetics for plot
color1 = ' steelblue '
color2 = ' red '
line_size = 4
#create basic bar plot
fig, ax = plt. subplots ()
ax. bar (df. index , df[' count '], color=color1)
#add cumulative percentage line to plot
ax2 = ax. twinx ()
ax2. plot ( df.index , df[' cumperc '], color=color2, marker=" D ", ms=line_size)
ax2. yaxis . set_major_formatter (PercentFormatter())
#specify axis colors
ax. tick_params (axis=' y ', colors=color1)
ax2. tick_params (axis=' y ', colors=color2)
#display Pareto chart
plt. show ()
L’asse X mostra i diversi marchi ordinati dalla frequenza più alta a quella più bassa.
L’asse Y di sinistra mostra la frequenza di ciascun marchio mentre l’asse Y di destra mostra la frequenza cumulativa dei marchi.
Ad esempio, possiamo vedere:
- Il marchio A rappresenta circa il 40% delle risposte totali al sondaggio.
- I marchi A e B rappresentano circa il 70% delle risposte totali al sondaggio.
- I marchi A, B e C rappresentano circa l’85% delle risposte totali al sondaggio.
E così via.
Passaggio 3: personalizza il grafico di Pareto (facoltativo)
Puoi modificare i colori delle barre e la dimensione della linea percentuale cumulativa per far sì che il grafico di Pareto appaia come desideri.
Ad esempio, potremmo cambiare le barre in rosa e la linea in viola e leggermente più spessa:
import matplotlib. pyplot as plt
from matplotlib. ticker import PercentFormatter
#define aesthetics for plot
color1 = ' pink '
color2 = ' purple '
line_size = 6
#create basic bar plot
fig, ax = plt. subplots ()
ax. bar (df. index , df[' count '], color=color1)
#add cumulative percentage line to plot
ax2 = ax. twinx ()
ax2. plot (df.index , df[' cumperc '], color=color2, marker=" D ", ms=line_size )
ax2. yaxis . set_major_formatter (PercentFormatter())
#specify axis colors
ax. tick_params (axis=' y ', colors=color1)
ax2. tick_params (axis=' y ', colors=color2)
#display Pareto chart
plt. show ()
Risorse addizionali
I seguenti tutorial spiegano come creare altre visualizzazioni comuni in Python:
Come creare una curva a campana in Python
Come creare un grafico a ogiva in Python
Come creare un diagramma di steli e foglie in Python