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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *