Panda's: hoe tijdreeksen opnieuw te samplen met groupby()


Het opnieuw bemonsteren van tijdreeksgegevens betekent dat de gegevens over een nieuwe periode worden samengevoegd.

Als u een tijdreeks in panda’s opnieuw wilt samplen met behulp van de groupby- operator, kunt u de volgende basissyntaxis gebruiken:

 group = df. groupby ([pd. Group (freq=' W '), ' store '])

result = group[' sales ']. sum (). unstack (' store '). fillna (0) 

Dit specifieke voorbeeld groepeert de rijen van het DataFrame op winkelkolom , herbemonstert vervolgens de tijdreeks per week ( freq=’W‘ ) en berekent vervolgens de som van de waarden in de verkoopkolom .

Houd er rekening mee dat we tijdreeksgegevens kunnen herbemonsteren naar verschillende tijdsperioden, waaronder:

  • S : Seconden
  • min : minuten
  • H : Uren
  • J :Dag
  • W : Week
  • M : Maand
  • Vraag : Kwartaal
  • EEN : Jaar

In het volgende voorbeeld ziet u hoe u in de praktijk tijdreeksgegevens opnieuw bemonstert met een groupby- bewerking.

Voorbeeld: Resample een tijdreeks met groupby in Pandas

Stel dat we het volgende panda’s DataFrame hebben dat de totale omzet per dag in twee verschillende winkels weergeeft:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' sales ': [13, 14, 17, 17, 16, 22, 28, 10, 17, 10, 11],
                   ' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B']} ,
                   index=pd. date_range ('2023-01-06', '2023-01-16', freq='d'))

#view DataFrame
print (df)

            sales store
2023-01-06 13 A
2023-01-07 14 A
2023-01-08 17 A
2023-01-09 17 A
2023-01-10 16A
2023-01-11 22 B
2023-01-12 28 B
2023-01-13 10 B
2023-01-14 17 B
2023-01-15 10 B
2023-01-16 11 B

Laten we zeggen dat we de rijen per winkel willen groeperen, vervolgens de tijdreeksen per week opnieuw willen bemonsteren en vervolgens de som van de waarden in de verkoopkolom willen berekenen.

We kunnen hiervoor de volgende syntaxis gebruiken:

 #group by store and resample time series by week
group = df. groupby ([pd. Group (freq=' W '), ' store '])

#calculate sum of sales each week by store
result = group[' sales ']. sum (). unstack (' store '). fillna (0)

#view results
print (result)

store AB
2023-01-08 14.0 0.0
2023-01-15 16.5 17.0
2023-01-22 0.0 11.0

Uit het resultaat kunnen we zien:

  • De som van de verkopen voor de week eindigend op 01/08/2023 in winkel A is 14 .
  • De som van de verkopen voor de week eindigend op 01/08/2023 in winkel B is 0 .

Enzovoort.

Merk op dat we er in dit voorbeeld voor hebben gekozen om de som van de waarden in de verkoopkolom te berekenen.

We kunnen echter ook andere statistieken kiezen, zoals aantal, gemiddelde, mediaan, min, max, enz.

Vervang eenvoudigweg sum() in de bovenstaande code door count() , Mean() , Median() , etc. om de metriek van uw keuze te berekenen.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in Python uitvoert:

Hoe een tijdreeks in Matplotlib te plotten
Hoe een tijdreeks in Seaborn te plotten
Hoe MAPE te berekenen uit tijdreeksen in Python

Einen Kommentar hinzufügen

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