Een pareto-diagram maken in python (stap voor stap)
Een Pareto-diagram is een type diagram dat zowel de geordende frequenties van categorieën als de cumulatieve frequenties van categorieën weergeeft.
Deze tutorial biedt een stapsgewijs voorbeeld van het maken van een Pareto-diagram in Python.
Stap 1: Creëer de gegevens
Stel dat we een enquête houden waarin we 350 verschillende mensen vragen hun favoriete ontbijtgranenmerk te identificeren tussen de merken A, B, C, D en E.
We kunnen het volgende panda’s DataFrame maken om de enquêteresultaten vast te houden:
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
Stap 2: Maak het Pareto-diagram
We kunnen de volgende code gebruiken om het Pareto-diagram te maken:
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 ()
Op de X-as worden de verschillende merken weergegeven, gerangschikt van de hoogste naar de laagste frequentie.
De linker y-as toont de frequentie van elk merk en de rechter y-as toont de cumulatieve frequentie van merken.
We kunnen bijvoorbeeld zien:
- Merk A vertegenwoordigt ongeveer 40% van de totale enquêtereacties.
- Merken A en B vertegenwoordigen ongeveer 70% van de totale enquêtereacties.
- Merken A, B en C vertegenwoordigen ongeveer 85% van de totale enquêtereacties.
Enzovoort.
Stap 3: Pas het Pareto-diagram aan (optioneel)
U kunt de staafkleuren en de grootte van de cumulatieve percentagelijn wijzigen om het Pareto-diagram er naar wens uit te laten zien.
We kunnen bijvoorbeeld de balken in roze veranderen en de lijn in paars en iets dikker:
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 ()
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende visualisaties in Python kunt maken:
Hoe u een belcurve maakt in Python
Hoe u een Ogive-diagram maakt in Python
Hoe u een stam- en bladplot maakt in Python