Hoe u gegevens groepeert in python: met voorbeelden
U kunt de volgende basissyntaxis gebruiken om gegevensgroepering uit te voeren op een Panda DataFrame:
import pandas as pd #perform binning with 3 bins df[' new_bin '] = pd. qcut (df[' variable_name '], q= 3 )
De volgende voorbeelden laten zien hoe u deze syntaxis in de praktijk kunt gebruiken met de volgende panda’s DataFrame:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' points ': [4, 4, 7, 8, 12, 13, 15, 18, 22, 23, 23, 25],
' assists ': [2, 5, 4, 7, 7, 8, 5, 4, 5, 11, 13, 8],
' rebounds ': [7, 7, 4, 6, 3, 8, 9, 9, 12, 11, 8, 9]})
#view DataFrame
print (df)
points assists rebounds
0 4 2 7
1 4 5 7
2 7 4 4
3 8 7 6
4 12 7 3
5 13 8 8
6 15 5 9
7 18 4 9
8 22 5 12
9 23 11 11
10 23 13 8
11 25 8 9
Voorbeeld 1: Groepering van stamgegevens uitvoeren
De volgende code laat zien hoe u gegevensgroepering uitvoert op de puntenvariabele met behulp van de functie qcut() met specifieke breekmarkeringen:
#perform data binning on variable points
df[' points_bin '] = pd. qcut (df[' points '], q= 3 )
#view updated DataFrame
print (df)
points assists rebounds points_bin
0 4 2 7 (3,999, 10,667]
1 4 5 7 (3,999, 10,667]
2 7 4 4 (3,999, 10,667]
3 8 7 6 (3,999, 10,667]
4 12 7 3 (10,667, 19,333]
5 13 8 8 (10,667, 19,333]
6 15 5 9 (10,667, 19,333]
7 18 4 9 (10,667, 19,333]
8 22 5 12 (19.333, 25.0]
9 23 11 11 (19.333, 25.0]
10 23 13 8 (19.333, 25.0]
11 25 8 9 (19.333, 25.0]
Houd er rekening mee dat elke rij in het gegevensframe in een van de drie groepen is geplaatst op basis van de waarde van de puntkolom.
We kunnen de functie value_counts() gebruiken om te bepalen hoeveel rijen er in elke bak zijn geplaatst:
#count frequency of each bin
df[' points_bin ']. value_counts ()
(3,999, 10,667] 4
(10.667, 19.333] 4
(19.333, 25.0] 4
Name: points_bin, dtype: int64
We kunnen zien dat elke bak 4 waarnemingen bevat.
Voorbeeld 2: Voer gegevensclustering uit met specifieke kwantielen
We kunnen ook dataclustering uitvoeren met behulp van specifieke kwantielen:
#perform data binning on variable points with specific quantiles
df[' points_bin '] = pd. qcut (df[' points '], q=[0, .2, .4, .6, .8, 1])
#view updated DataFrame
print (df)
points assists rebounds points_bin
0 4 2 7 (3.999, 7.2]
1 4 5 7 (3.999, 7.2]
2 7 4 4 (3.999, 7.2]
3 8 7 6 (7.2, 12.4]
4 12 7 3 (7.2, 12.4]
5 13 8 8 (12.4, 16.8]
6 15 5 9 (12.4, 16.8]
7 18 4 9 (16.8, 22.8]
8 22 5 12 (16.8, 22.8]
9 23 11 11 (22.8, 25.0]
10 23 13 8 (22.8, 25.0]
11 25 8 9 (22.8, 25.0]
Voorbeeld 3: Voer gegevensgroepering uit met labels
We kunnen ook gegevensgroepering uitvoeren met behulp van specifieke kwantielen en labels:
#perform data binning on points variable with specific quantiles and labels
df[' points_bin '] = pd. qcut (df[' points '],
q=[0, .2, .4, .6, .8, 1],
labels=[' A ',' B ',' C ',' D ',' E '])
#view updated DataFrame
print (df)
points assists rebounds points_bin
0 4 2 7 A
1 4 5 7 A
2 7 4 4 A
3 8 7 6 B
4 12 7 3 B
5 13 8 8 C
6 15 5 9 C
7 18 4 9 D
8 22 5 12 D
9 23 11 11 E
10 23 13 8 E
11 25 8 9 E
Houd er rekening mee dat aan elke rij een bak is toegewezen op basis van de puntkolomwaarde en dat de bakken met letters zijn gelabeld.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:
Panda’s: hoe de functie value_counts() te gebruiken
Panda’s: hoe u een draaitabel met een aantal waarden maakt
Panda’s: hoe u exemplaren met een specifieke waarde in een kolom kunt tellen