Pandy: jak używać groupby z diff


Aby używać funkcji groupby() z funkcją diff() w pandach, możesz użyć następującej podstawowej składni:

 df = df. sort_values (by=[' group_var1 ', ' group_var2 '])

df[' diff '] = df. groupby ([' group_var1 '])[' values_var ']. diff (). fillna ( 0 )

Ten konkretny przykład sortuje wiersze ramki DataFrame według dwóch określonych zmiennych, następnie grupuje je według group_var1 i oblicza różnicę między wierszami w kolumnie wartości_zmienna .

Zauważ, że fillna(0) mówi pandom, aby wstawiały zero za każdym razem, gdy wartość zmiennej grupowej zmienia się pomiędzy kolejnymi wierszami w ramce DataFrame.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Jak używać groupby z różnicą w Pandach

Załóżmy, że mamy następującą ramkę danych pand, która zawiera całkowitą sprzedaż dokonaną przez dwa różne sklepy w różnych datach:

 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

Załóżmy teraz, że chcemy utworzyć nową kolumnę o nazwie sales_diff zawierającą różnicę w wartościach sprzedaży pomiędzy kolejnymi datami, pogrupowanymi według sklepów.

W tym celu możemy użyć następującej składni:

 #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

Nowa kolumna sales_diff zawiera różnicę wartości sprzedaży pomiędzy kolejnymi datami, pogrupowanymi według sklepów.

Na przykład możemy zobaczyć:

  • Różnica w sprzedaży w sklepie A pomiędzy 1.01.2022 a 2.01.2022 wynosi 3 .
  • Różnica w sprzedaży w sklepie A pomiędzy 01.02.2022 a 01.03.2022 wynosi 9 .
  • Różnica w sprzedaży w sklepie A pomiędzy 1.03.2022 a 1.4.2022 wynosi 0 .

I tak dalej.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje na pandach:

Jak wykonać sumę GroupBy w Pandach
Jak korzystać z Groupby i Plot w Pandach
Jak liczyć unikalne wartości za pomocą GroupBy w Pandach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *