Panda's: groupby gebruiken met diff


U kunt de volgende basissyntaxis gebruiken om de functie groupby() te gebruiken met de functie diff() in panda’s:

 df = df. sort_values (by=[' group_var1 ', ' group_var2 '])

df[' diff '] = df. groupby ([' group_var1 '])[' values_var ']. diff (). fillna ( 0 )

Dit specifieke voorbeeld sorteert de rijen van het DataFrame op twee specifieke variabelen, groepeert ze vervolgens op group_var1 en berekent het verschil tussen de rijen in de kolom waarden_var .

Merk op dat fillna(0) panda’s vertelt een nul in te voegen wanneer de waarde van de groepsvariabele verandert tussen opeenvolgende regels in het DataFrame.

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

Voorbeeld: Groupby gebruiken met diff in Pandas

Stel dat we het volgende panda’s DataFrame hebben dat de totale omzet bevat die door twee verschillende winkels op verschillende datums is behaald:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' date ': pd. to_datetime (['2022-01-01', '2022-01-02',
                                           '2022-01-03', '2022-01-04',
                                           '2022-01-01', '2022-01-02',
                                           '2022-01-03', '2022-01-04']),
                   ' sales ': [12, 15, 24, 24, 14, 19, 12, 38]})

#view DataFrame
print (df)

  blind date sales
0 A 2022-01-01 12
1 A 2022-01-02 15
2 A 2022-01-03 24
3 A 2022-01-04 24
4 B 2022-01-01 14
5 B 2022-01-02 19
6 B 2022-01-03 12
7 B 2022-01-04 38

Laten we nu zeggen dat we een nieuwe kolom willen maken met de naam sales_diff , die het verschil in verkoopwaarden tussen opeenvolgende datums bevat, gegroepeerd op winkel.

We kunnen hiervoor de volgende syntaxis gebruiken:

 #sort DataFrame by store and date
df = df. sort_values (by=[' store ', ' date '])

#create new column that contains difference between sales grouped by store
df[' sales_diff '] = df. groupby ([' store '])[' sales ']. diff (). fillna ( 0 )

#view update DataFrame
print (df)

  store date sales sales_diff
0 A 2022-01-01 12 0.0
1 A 2022-01-02 15 3.0
2 A 2022-01-03 24 9.0
3 A 2022-01-04 24 0.0
4 B 2022-01-01 14 0.0
5 B 2022-01-02 19 5.0
6 B 2022-01-03 12 -7.0
7 B 2022-01-04 38 26.0

De nieuwe kolom sales_diff bevat het verschil in verkoopwaarden tussen opeenvolgende datums, gegroepeerd per winkel.

We kunnen bijvoorbeeld zien:

  • Het verschil in de omzet van winkel A tussen 1-1-2022 en 1-2-2022 is 3 .
  • Het verschil in de omzet van winkel A tussen 01-02-2022 en 01-03-2022 bedraagt 9 .
  • Het verschil in de omzet van winkel A tussen 3-1-2022 en 4-1-2022 is 0 .

Enzovoort.

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