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