Panda's: een mute()-functie gebruiken die gelijkwaardig is aan r


In de programmeertaal R kunnen we de functie mute() uit het dplyr- pakket gebruiken om snel nieuwe kolommen toe te voegen aan een gegevensframe dat is berekend op basis van de bestaande kolommen.

De volgende code laat bijvoorbeeld zien hoe u de gemiddelde waarde van een specifieke kolom in R kunt berekenen en die waarde kunt toevoegen als een nieuwe kolom in een gegevensframe:

 library (dplyr)

#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(30, 22, 19, 14, 14, 11, 20, 28))

#add new column that shows mean points by team
df <- df %>%
      group_by(team) %>%
      mutate(mean_points = mean(points))

#view updated data frame
df

  team points mean_points           
1 to 30 21.2
2 A 22 21.2
3 A 19 21.2
4 A 14 21.2
5 B 14 18.2
6 B 11 18.2
7 B 20 18.2
8 B 28 18.2

Het equivalent van de functie mute() in panda’s is de functie transform() .

Het volgende voorbeeld laat zien hoe u deze functie in de praktijk kunt gebruiken.

Voorbeeld: transform() gebruiken in panda’s om mute() in R te repliceren

Stel dat we het volgende panda’s DataFrame hebben dat de punten weergeeft die zijn gescoord door basketbalspelers van verschillende teams:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [30, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  team points
0 to 30
1 to 22
2 to 19
3 to 14
4 B 14
5 B 11
6 B 20
7 B 28

We kunnen de functie transform() gebruiken om een nieuwe kolom toe te voegen met de naam Mean_points , waarin de gemiddelde punten worden weergegeven die door elk team zijn gescoord:

 #add new column to DataFrame that shows mean points by team
df[' mean_points '] = df. groupby (' team ')[' points ']. transform (' mean ')

#view updated DataFrame
print (df)

  team points mean_points
0 to 30 21.25
1 to 22 21.25
2 A 19 21.25
3 to 14 21.25
4 B 14 18.25
5 B 11 18.25
6 B 20 18.25
7 B 28 18.25

De gemiddelde puntwaarde voor spelers van team A was 21,25 en de gemiddelde puntwaarde voor spelers van team B was 18,25 , dus deze waarden werden dienovereenkomstig aan elke speler in een nieuwe kolom toegewezen.

Merk op dat dit overeenkomt met de resultaten die zijn verkregen met de functie mute() in het inleidende voorbeeld.

Het is vermeldenswaard dat u lambda ook kunt gebruiken om aangepaste berekeningen uit te voeren in de functie transform() .

De volgende code laat bijvoorbeeld zien hoe u lambda kunt gebruiken om het percentage van het totaal aantal punten te berekenen dat door elke speler in zijn respectievelijke team is gescoord:

 #create new column called percent_of_points
df[' percent_of_points '] = df. groupby (' team ')[' points ']. transform ( lambda x:x/ x.sum ())

#view updated DataFrame
print (df)

  team points percent_of_points
0 A 30 0.352941
1 A 22 0.258824
2 A 19 0.223529
3 A 14 0.164706
4 B 14 0.191781
5 B 11 0.150685
6 B 20 0.273973
7 B 28 0.383562

Zo interpreteert u het resultaat:

  • De eerste speler van team A scoorde 30 punten op een totaal van 85 onder de spelers van team A. Zijn percentage van het totale aantal gescoorde punten was dus 30/85 = 0,352941 .
  • De tweede speler van team A scoorde 22 punten op een totaal van 85 onder de spelers van team A. Zijn percentage van het totale aantal gescoorde punten was dus 22/85 = 0,258824 .

Enzovoort.

Merk op dat we het lambda- argument in de transform()- functie kunnen gebruiken om elke gewenste aangepaste berekening uit te voeren.

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 u unieke waarden kunt tellen met GroupBy in Pandas

Einen Kommentar hinzufügen

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