Pandas: cara menghitung rata-rata pergerakan per grup


Anda dapat menggunakan sintaks dasar berikut untuk menghitung rata-rata pergerakan grup untuk panda:

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

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: menghitung rata-rata pergerakan berdasarkan kelompok di Pandas

Misalkan kita memiliki panda DataFrame berikut yang menunjukkan total penjualan yang dilakukan oleh dua toko selama lima periode penjualan:

 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

Kita dapat menggunakan kode berikut untuk menghitung rata-rata penjualan bergulir 3 hari untuk setiap toko:

 #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

Catatan : x.rolling(3, 1) berarti menghitung rata-rata bergulir selama 3 periode dan membutuhkan 1 sebagai jumlah minimum periode.

Kolom “saya” menampilkan rata-rata penjualan bergerak selama 3 hari untuk setiap toko.

Untuk menghitung rata-rata pergerakan yang berbeda, cukup ubah nilainya di fungsi Rolling() .

Misalnya, kita dapat menghitung rata-rata pergerakan penjualan 2 hari untuk setiap toko:

 #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

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:

Cara melakukan penjumlahan GroupBy di Pandas
Cara menghitung nilai unik menggunakan GroupBy di Pandas
Cara menggunakan Groupby dan Plot di Pandas

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *