Pandy: jak obliczyć średnią ruchomą na grupę


Aby obliczyć grupową średnią ruchomą dla pand, możesz użyć następującej podstawowej składni:

 #calculate 3-period moving average of 'values' by 'group'
df. groupby (' group ')[' values ']. transform ( lambda x: x.rolling (3,1) .mean ())

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

Przykład: oblicz średnią ruchomą według grupy w Pandach

Załóżmy, że mamy następującą ramkę danych pand, która pokazuje całkowitą sprzedaż dokonaną przez dwa sklepy w pięciu okresach sprzedaży:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' period ': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
                   ' sales ': [7, 7, 9, 13, 14, 13, 13, 19, 20, 26]})

#view DataFrame
df

	store period sales
0 to 1 7
1 to 2 7
2 to 3 9
3 to 4 13
4 to 5 14
5 B 1 13
6 B 2 13
7 B 3 19
8 B 4 20
9 B 5 26

Możemy użyć poniższego kodu, aby obliczyć 3-dniową średnią kroczącą sprzedaży dla każdego sklepu:

 #calculate 3-day moving average of sales by store
df[' ma '] = df. groupby (' store ')[' sales ']. transform ( lambda x: x.rolling (3,1) .mean ())

#view updated DataFrame
df

        store period sales ma
0 A 1 7 7.000000
1 to 2 7 7.000000
2 A 3 9 7.666667
3 A 4 13 9.666667
4 A 5 14 12.000000
5 B 1 13 13.000000
6 B 2 13 13.000000
7 B 3 19 15.000000
8 B 4 20 17.333333
9 B 5 26 21.666667

Uwaga : x.rolling(3, 1) oznacza obliczenie średniej kroczącej z 3 okresów i wymaganie 1 jako minimalnej liczby okresów.

Kolumna „my” wyświetla 3-dniową średnią ruchomą sprzedaży dla każdego sklepu.

Aby obliczyć inną średnią ruchomą, wystarczy zmienić wartość w funkcji Rolling() .

Zamiast tego moglibyśmy na przykład obliczyć dwudniową średnią ruchomą sprzedaży dla każdego sklepu:

 #calculate 2-day moving average of sales by store
df[' ma '] = df. groupby (' store ')[' sales ']. transform ( lambda x: x.rolling (2,1) .mean ())

#view updated DataFrame
df

        store period sales ma
0 to 1 7 7.0
1 to 2 7 7.0
2 to 3 9 8.0
3 A 4 13 11.0
4 to 5 14 13.5
5 B 1 13 13.0
6 B 2 13 13.0
7 B 3 19 16.0
8 B 4 20 19.5
9 B 5 26 23.0

Dodatkowe zasoby

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

Jak wykonać sumę GroupBy w Pandach
Jak liczyć unikalne wartości za pomocą GroupBy w Pandach
Jak korzystać z Groupby i Plot w Pandach

Dodaj komentarz

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