Groeperen op week in pandas dataframe (met voorbeeld)


U kunt de volgende basissyntaxis gebruiken om rijen per week te groeperen in een Panda DataFrame:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' values ']. sum ()

Deze specifieke formule groepeert de rijen per week in de datumkolom en berekent de som van de waarden voor de kolom met waarden in het DataFrame.

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

Voorbeeld: Groeperen op week bij Pandas

Laten we zeggen dat we de volgende panda’s DataFrame hebben die de verkopen van een bedrijf op verschillende data weergeven:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' date ': pd. date_range (start='1/5/2022', freq='D', periods=15),
                   ' sales ': [6, 8, 9, 5, 4, 8, 8, 3, 5, 9, 8, 3, 4, 7, 7]})

#view DataFrame
print (df)

         dirty date
0 2022-01-05 6
1 2022-01-06 8
2 2022-01-07 9
3 2022-01-08 5
4 2022-01-09 4
5 2022-01-10 8
6 2022-01-11 8
7 2022-01-12 3
8 2022-01-13 5
9 2022-01-14 9
10 2022-01-15 8
11 2022-01-16 3
12 2022-01-17 4
13 2022-01-18 7
14 2022-01-19 7

Gerelateerd: Hoe u een datumbereik in Panda’s kunt maken

We kunnen de volgende syntaxis gebruiken om de som van de verkopen gegroepeerd per week te berekenen:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. sum ()

date
2022-01-02 32
2022-01-09 44
2022-01-16 18
Freq: W-SUN, Name: sales, dtype: int64

Zo interpreteert u het resultaat:

  • Er waren in totaal 32 verkopen tijdens de week die begon op de dag na 1/2/2022.
  • Er waren in totaal 44 verkopen tijdens de week die begon op de dag na 01/09/2022.
  • Er werden in totaal 18 verkopen gedaan tijdens de week die begon op de dag na 16-01-2022.

Opgemerkt moet worden dat panda’s er standaard van uitgaan dat de week de dag na zondag begint ( W-SUN ).

Volgens de documentatie kunt u deze waarde voor Freq echter wijzigen.

U kunt bijvoorbeeld Freq=W-MON opgeven als u wilt dat elke week de dag na maandag begint (dwz dinsdag).

We kunnen een vergelijkbare syntaxis gebruiken om de maximale verkoopwaarden gegroepeerd per week te berekenen:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate max of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. max ()

date
2022-01-02 9
2022-01-09 9
2022-01-16 7
Freq: W-SUN, Name: sales, dtype: int64

Zo interpreteert u het resultaat:

  • De maximale omzet per dag tijdens de week vanaf de dag na 01/02/2022 bedroeg 9 .
  • Het maximale aantal verkopen per dag tijdens de week vanaf de dag na 01/9/2022 was 9 .
  • Het maximale aantal verkopen per dag tijdens de week vanaf de dag na 16-01-2022 was 7 .

Opmerking : U kunt hier de volledige documentatie van de groupby- bewerking in panda’s vinden.

Aanvullende bronnen

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

Groeperen op maand in Pandas DataFrame
Groeperen op dag in Pandas DataFrame
Hoe Groupby te gebruiken en voorwaardelijk te tellen in Pandas

Einen Kommentar hinzufügen

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