Pandalar: diff ile groupby nasıl kullanılır?
Pandalarda groupby() işlevini diff() işleviyle birlikte kullanmak için aşağıdaki temel sözdizimini kullanabilirsiniz:
df = df. sort_values (by=[' group_var1 ', ' group_var2 ']) df[' diff '] = df. groupby ([' group_var1 '])[' values_var ']. diff (). fillna ( 0 )
Bu özel örnek, DataFrame’in satırlarını iki spesifik değişkene göre sıralar, ardından bunları group_var1’e göre gruplandırır ve value_var sütunundaki satırlar arasındaki farkı hesaplar.
fillna(0)’ ın pandalara, grup değişkeninin değeri DataFrame’deki ardışık satırlar arasında değiştiğinde sıfır eklemelerini söylediğini unutmayın.
Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.
Örnek: Pandalarda diff ile groupby nasıl kullanılır?
İki farklı mağazanın farklı tarihlerde yaptığı toplam satışları içeren aşağıdaki panda DataFrame’e sahip olduğumuzu varsayalım:
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
Şimdi mağazaya göre gruplandırılmış, ardışık tarihler arasındaki satış değerleri farkını içeren sales_diff adında yeni bir sütun oluşturmak istediğimizi varsayalım.
Bunu yapmak için aşağıdaki sözdizimini kullanabiliriz:
#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
Yeni sales_diff sütunu, mağazaya göre gruplandırılmış olarak ardışık tarihler arasındaki satış değerleri farkını içerir.
Örneğin şunu görebiliriz:
- A mağazasının 1/1/2022 ile 2/1/2022 tarihleri arasındaki satış farkı 3’tür .
- A mağazasının 02/01/2022 ile 03/01/2022 tarihleri arasındaki satış farkı 9’dur .
- A mağazasının 3/1/2022 ile 4/1/2022 tarihleri arasındaki satış farkı 0’dır .
Ve benzeri.
Ek kaynaklar
Aşağıdaki eğitimlerde pandalarda diğer yaygın işlemlerin nasıl gerçekleştirileceği açıklanmaktadır:
Pandalarda GroupBy toplamı nasıl gerçekleştirilir?
Pandalarda Groupby ve Plot nasıl kullanılır?
Pandalar’da GroupBy kullanılarak benzersiz değerler nasıl sayılır?