Hoe histogrammen per groep in panda's te plotten
U kunt de volgende methoden gebruiken om histogrammen per groep in een Panda DataFrame uit te zetten:
Methode 1: Histogrammen per groep plotten met behulp van meerdere plots
df[' values_var ']. hist (by=df[' group_var '])
Methode 2: Histogrammen per groep plotten met behulp van één enkele plot
plt. hist (group1, alpha= 0.5 , label=' group1 ') plt. hist (group2, alpha= 0.5 , label=' group2 ') plt. hist (group3, alpha= 0.5 , label=' group3 ')
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met de volgende panda’s DataFrame, waarin de punten worden weergegeven die zijn gescoord door basketbalspelers uit drie verschillende teams:
import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (1) #createDataFrame df = pd. DataFrame ({' team ': np.repeat ([' A ',' B ',' C '], 100 ), ' points ': np. random . normal (loc= 20 , scale= 2 , size= 300 )}) #view head of DataFrame print ( df.head ()) team points 0 A 23.248691 1 A 18.776487 2 A 18.943656 3 A 17.854063 4 A 21.730815
Voorbeeld 1: Histogrammen per groep plotten met behulp van meerdere plots
De volgende code laat zien hoe u drie histogrammen kunt maken die de verdeling weergeven van de punten die zijn gescoord door spelers van elk van de drie teams:
#create histograms of points by team df[' points ']. hist (by=df[' team '])
We kunnen ook het argument edgecolor gebruiken om randlijnen aan elk histogram toe te voegen en het argument figsize om de grootte van elk histogram te vergroten, zodat ze gemakkelijker te visualiseren zijn:
#create histograms of points by team df[' points ']. hist (by=df[' team '], edgecolor=' black ', figsize = ( 8 , 6 ))
Voorbeeld 2: Histogrammen per groep plotten met behulp van één enkele plot
De volgende code laat zien hoe u drie histogrammen maakt en deze allemaal op dezelfde plot plaatst:
import matplotlib.pyplot as plt
#define points values by group
A = df. loc [df[' team '] == ' A ', ' points ']
B = df. loc [df[' team '] == ' B ', ' points ']
C = df. loc [df[' team '] == ' C ', ' points ']
#add three histograms to one plot
plt. hist (A, alpha= 0.5 , label=' A ')
plt. hist (B, alpha= 0.5 , label=' B ')
plt. hist (C, alpha= 0.5 , label=' C ')
#add plot title and axis labels
plt. title (' Points Distribution by Team ')
plt. xlabel (' Points ')
plt. ylabel (' Frequency ')
#add legend
plt. legend (title=' Team ')
#displayplot
plt. show ()
Het eindresultaat is een plot met drie op elkaar gestapelde histogrammen.
Opmerking : het alpha- argument specificeert de transparantie van elk histogram. Deze waarde kan variëren van 0 tot 1. Door deze waarde gelijk te stellen aan 0,5 kunnen we elk overlay-histogram beter visualiseren.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende plots in Python kunt maken:
Hoe meerdere lijnen in Matplotlib te plotten
Hoe u een boxplot maakt vanuit Pandas DataFrame
Hoe u meerdere Panda-kolommen in een staafdiagram kunt plotten