Pandas: як використовувати groupby з diff
Ви можете використовувати наступний базовий синтаксис, щоб використовувати функцію groupby() з функцією diff() у pandas:
df = df. sort_values (by=[' group_var1 ', ' group_var2 ']) df[' diff '] = df. groupby ([' group_var1 '])[' values_var ']. diff (). fillna ( 0 )
У цьому конкретному прикладі рядки DataFrame сортуються за двома певними змінними, потім групуються за group_var1 і обчислюється різниця між рядками у стовпці values_var .
Зверніть увагу, що fillna(0) повідомляє pandas вставляти нуль кожного разу, коли значення групової змінної змінюється між послідовними рядками у DataFrame.
У наступному прикладі показано, як використовувати цей синтаксис на практиці.
Приклад: як використовувати groupby з diff у Pandas
Припустімо, що ми маємо такий фрейм даних pandas, який містить загальні продажі, зроблені двома різними магазинами в різні дати:
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
Тепер припустімо, що ми хочемо створити новий стовпець під назвою sales_diff , який містить різницю в величинах продажів між послідовними датами, згрупованими за магазинами.
Для цього ми можемо використати такий синтаксис:
#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
Новий стовпець sales_diff містить різницю в значеннях продажів між послідовними датами, згрупованими за магазинами.
Наприклад, ми можемо побачити:
- Різниця в продажах магазину А між 01.01.2022 і 01.02.2022 становить 3 .
- Різниця в продажах магазину А між 01.02.2022 та 01.03.2022 становить 9 .
- Різниця в продажах магазину А між 03.01.2022 і 04.01.2022 дорівнює 0 .
І так далі.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові операції в pandas:
Як виконати суму GroupBy у Pandas
Як використовувати Groupby та Plot у Pandas
Як підрахувати унікальні значення за допомогою GroupBy в Pandas