Jak grupować dane według czasu w pandach (z przykładem)


Możesz użyć następującej składni, aby pogrupować dane według czasu i wykonać agregację w pandach:

 df. groupby ([df[' time ']. dt . hour ]). dirty . sum ()

Ten konkretny przykład grupuje wartości według godzin w kolumnę o nazwie Godzina , a następnie oblicza sumę wartości w kolumnie Sprzedaż dla każdej godziny.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: grupuj dane według czasu w Pandach

Załóżmy, że mamy następującą ramkę danych pandy, która pokazuje liczbę sprzedaży dokonanych w sklepie o różnych porach dnia:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' time ': ['2022-01-01 01:14:00', '2022-01-01 01:24:15',
                            '2022-01-01 02:52:19', '2022-01-01 02:54:00',
                            '2022-01-01 04:05:10', '2022-01-01 05:35:09'],
                   ' sales ': [18, 20, 15, 14, 10, 9]})

#convert date column to datetime
df[' time '] = pd. to_datetime (df[' time '])

#view DataFrame
print (df)

                 time sales
0 2022-01-01 01:14:00 18
1 2022-01-01 01:24:15 20
2 2022-01-01 02:52:19 15
3 2022-01-01 02:54:00 14
4 2022-01-01 04:05:10 10
5 2022-01-01 05:35:09 9

Możemy zastosować następującą składnię, aby pogrupować kolumnę czasu według godzin i obliczyć sumę sprzedaży dla każdej godziny:

 #group by hours in time column and calculate sum of sales
df. groupby ([df[' time ']. dt . hour ]). dirty . sum ()

time
1 38
2 29
4 10
5 9
Name: sales, dtype: int64

Z wyniku możemy zobaczyć:

  • W ciągu pierwszej godziny dokonano łącznie 38 sprzedaży.
  • W ciągu drugiej godziny dokonano łącznie 29 sprzedaży.
  • W ciągu czwartej godziny dokonano łącznie 10 sprzedaży.
  • W ciągu piątej godziny dokonano łącznie 9 sprzedaży.

Należy pamiętać, że możemy wykonać także inną agregację.

Na przykład możemy obliczyć średnią liczbę sprzedaży na godzinę:

 #group by hours in time column and calculate mean of sales
df. groupby ([df[' time ']. dt . hour ]). dirty . mean ()

time
1 19.0
2 14.5
4 10.0
5 9.0
Name: sales, dtype: float64

Jeśli chcemy, możemy także grupować według godzin i minut.

Na przykład poniższy kod pokazuje, jak obliczyć sumę sprzedaży pogrupowaną według godzin i minut:

 #group by hours and minutes in time column and calculate mean of sales
df. groupby ([df[' time ']. dt . hour , df[' time ']. dt . minute ]). dirty . mean ()

time time
1 14 18
      24 20
2 52 15
      54 14
4 5 10
5 35 9
Name: sales, dtype: int64

Z wyniku możemy zobaczyć:

  • Średnia liczba sprzedaży w ciągu 1 godziny 14 minut wyniosła 18 .
  • Średnia liczba sprzedaży w ciągu 1 godziny 23 minut wyniosła 20 .
  • Średnia liczba sprzedaży w ciągu 2 godzin i 52 minut wyniosła 15 .

I tak dalej.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje na pandach:

Jak utworzyć zakres dat w Pandach
Jak wyodrębnić miesiąc z daty w Pandach
Jak przekonwertować znacznik czasu na datę/godzinę w Pandach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *