Hoe de offset per groep in panda's te berekenen


U kunt de volgende methoden gebruiken om groep-verschoven waarden in een Panda DataFrame te berekenen:

Methode 1: Bereken de offset van een groep

 df[' lagged_values '] = df. groupby ([' group '])[' values ']. shift ( 1 )

Methode 2: Bereken de offset van meerdere groepen

 df[' lagged_values '] = df. groupby ([' group1 ', ' group2 '])[' values ']. shift ( 1 )

Merk op dat de waarde van de functie shift() het aantal waarden aangeeft waarvoor de verschuiving moet worden berekend.

De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken.

Voorbeeld 1: Bereken de offset van een groep

Laten we zeggen dat we het volgende panda’s DataFrame hebben dat de verkopen weergeeft die door twee winkels op opeenvolgende dagen zijn gerealiseerd:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]})
#view DataFrame
print (df)

  blind sales
0 to 18
1 to 10
2 to 14
3 to 13
4 B 19
5 B 24
6 B 25
7 B 29

We kunnen de volgende syntaxis gebruiken om een compensatiekolom te maken die de verkopen van de vorige dag voor elke winkel weergeeft:

 #add column that displays lag of sales column by store
df[' lagged_sales '] = df. groupby ([' store '])[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

  store sales lagged_sales
0 to 18 NaN
1 to 10 18.0
2 A 14 10.0
3 A 13 14.0
4 B 19 NaN
5 B 24 19.0
6 B 25 24.0
7 B 29 25.0

Zo interpreteert u het resultaat:

  • De eerste waarde in de compensatiekolom is NaN , aangezien er geen eerdere waarde bestaat in de verkoopkolom voor winkel A.
  • De tweede waarde in de compensatiekolom is 18 , aangezien dit de vorige waarde is in de verkoopkolom voor winkel A.

Enzovoort.

Voorbeeld 2: Bereken de offset van meerdere groepen

Stel dat we het volgende panda’s DataFrame hebben dat de verkopen weergeeft die werknemers van twee winkels op opeenvolgende dagen hebben gemaakt:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' employee ':['O', 'O', 'R', 'R', 'O', 'O', 'R', 'R'],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]})
#view DataFrame
print (df)

  store employee sales
0 AO 18
1 AO 10
2 AR 14
3 AR 13
4 BO 19
5 BO 24
6 BR 25
7 BR 29

We kunnen de volgende syntaxis gebruiken om een compensatiekolom te maken die de verkopen van de vorige dag voor elke werknemer in elke winkel weergeeft:

 #add column that displays lag of sales column by store and employee
df[' lagged_sales '] = df. groupby ([' store ',' employee '])[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

  store employee sales lagged_sales
0 AO 18 NaN
1 AO 10 18.0
2 AR 14 NaN
3 AR 13 14.0
4 BO 19 NaN
5 BO 24 19.0
6 BR 25 NaN
7 BR 29 25.0

De nieuwe kolom met vertraagde verkoop toont de omzet van de vorige dag voor elke medewerker in elke winkel.

Opmerking : in dit voorbeeld hebben we gegroepeerd op twee kolommen, maar u kunt op zoveel kolommen groeperen als u wilt door zoveel namen van variabelen op te nemen als u wilt in de functie groupby() .

Aanvullende bronnen

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

Hoe kolommen in Panda’s te verwijderen
Hoe u kolommen uitsluit in Panda’s
Hoe een functie toe te passen op geselecteerde kolommen in Pandas
Hoe u de kolomvolgorde in Pandas DataFrame kunt wijzigen

Einen Kommentar hinzufügen

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