Een functie toepassen op panda's groupby


U kunt de volgende basissyntaxis gebruiken om de functies groupby() en apply() samen te gebruiken in een pandas DataFrame:

 df. groupby (' var1 '). apply ( lambda x: some function)

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 ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points_for ': [18, 22, 19, 14, 11, 20, 28],
                   ' points_against ': [14, 21, 19, 14, 12, 20, 21]})

#view DataFrame
print (df)

  team points_for points_against
0 to 18 14
1 To 22 21
2 A 19 19
3 B 14 14
4 B 11 12
5 B 20 20
6 B 28 21

Voorbeeld 1: Gebruik groupby() en apply() om relatieve frequenties te vinden

De volgende code laat zien hoe u de functies groupby( ) en apply() gebruikt om de relatieve frequenties van elke teamnaam in het panda’s DataFrame te vinden:

 #find relative frequency of each team name in DataFrame
df. groupby (' team '). apply ( lambda x:x[' team ']. count ()/ df.shape [0])

team
A 0.428571
B 0.571429
dtype:float64

Uit het resultaat kunnen we zien dat team A in 42,85% van alle rijen voorkomt en team B in 57,14% van alle rijen.

Voorbeeld 2: Gebruik groupby() en apply() om maximale waarden te vinden

De volgende code laat zien hoe u de functies groupby( ) en apply() kunt gebruiken om de maximale “points_for”-waarden voor elk team te vinden:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x:x[' points_for ']. max ())

team
At 22
B28
dtype: int64

Uit het resultaat kunnen we zien dat het maximale aantal punten gescoord door team A 22 is en het maximale aantal punten gescoord door team B 28 is.

Voorbeeld 3: Gebruik groupby() en apply() om een aangepaste berekening uit te voeren

De volgende code laat zien hoe u de functies groupby( ) en apply() kunt gebruiken om het gemiddelde verschil tussen “points_for” en “points_against” voor elk team te vinden:

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x: (x[' points_for '] - x[' points_against ']). mean ())

team
A 1.666667
B 1.500000
dtype:float64

Uit de resultaten kunnen we zien dat het gemiddelde verschil tussen ‘punten voor’ en ‘punten tegen’ 1,67 is voor team A en 1,50 voor team B.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in panda’s kunt uitvoeren:

Hoe u een GroupBy-som uitvoert in Pandas
Groupby en Plot gebruiken in Panda’s
Hoe unieke waarden te tellen met GroupBy in Pandas

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert