Pandas: cara menggunakan groupby dengan diff
Anda dapat menggunakan sintaks dasar berikut untuk menggunakan fungsi groupby() dengan fungsi diff() di pandas:
df = df. sort_values (by=[' group_var1 ', ' group_var2 ']) df[' diff '] = df. groupby ([' group_var1 '])[' values_var ']. diff (). fillna ( 0 )
Contoh khusus ini mengurutkan baris DataFrame berdasarkan dua variabel tertentu, lalu mengelompokkannya berdasarkan group_var1 dan menghitung selisih antara baris di kolom value_var .
Perhatikan bahwa fillna(0) memberitahu panda untuk memasukkan angka nol setiap kali nilai variabel grup berubah di antara baris yang berurutan di DataFrame.
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: Cara menggunakan groupby dengan diff di Pandas
Misalkan kita memiliki pandas DataFrame berikut yang berisi total penjualan yang dilakukan oleh dua toko berbeda pada tanggal berbeda:
import pandas as pd #createDataFrame df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' date ': pd. to_datetime (['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04']), ' sales ': [12, 15, 24, 24, 14, 19, 12, 38]}) #view DataFrame print (df) blind date sales 0 A 2022-01-01 12 1 A 2022-01-02 15 2 A 2022-01-03 24 3 A 2022-01-04 24 4 B 2022-01-01 14 5 B 2022-01-02 19 6 B 2022-01-03 12 7 B 2022-01-04 38
Sekarang misalkan kita ingin membuat kolom baru bernama sales_diff yang berisi selisih nilai penjualan antara tanggal berturut-turut, dikelompokkan berdasarkan toko.
Kita dapat menggunakan sintaks berikut untuk melakukan ini:
#sort DataFrame by store and date
df = df. sort_values (by=[' store ', ' date '])
#create new column that contains difference between sales grouped by store
df[' sales_diff '] = df. groupby ([' store '])[' sales ']. diff (). fillna ( 0 )
#view update DataFrame
print (df)
store date sales sales_diff
0 A 2022-01-01 12 0.0
1 A 2022-01-02 15 3.0
2 A 2022-01-03 24 9.0
3 A 2022-01-04 24 0.0
4 B 2022-01-01 14 0.0
5 B 2022-01-02 19 5.0
6 B 2022-01-03 12 -7.0
7 B 2022-01-04 38 26.0
Kolom sales_diff baru berisi selisih nilai penjualan antara tanggal berturut-turut, yang dikelompokkan berdasarkan toko.
Misalnya, kita dapat melihat:
- Selisih penjualan toko A antara 1/1/2022 dan 1/2/2022 adalah 3 .
- Selisih penjualan toko A antara 01/02/2022 dan 01/03/2022 adalah 9 .
- Selisih penjualan toko A antara 3/1/2022 dan 4/1/2022 adalah 0 .
Dan seterusnya.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:
Cara melakukan penjumlahan GroupBy di Pandas
Cara menggunakan Groupby dan Plot di Pandas
Cara menghitung nilai unik menggunakan GroupBy di Pandas