Jak obliczyć przesunięcie na grupę w pandach


Aby obliczyć wartości przesunięte w grupie w ramce DataFrame pandy, możesz użyć następujących metod:

Metoda 1: Oblicz przesunięcie według grupy

 df[' lagged_values '] = df. groupby ([' group '])[' values ']. shift ( 1 )

Metoda 2: Oblicz przesunięcie dla wielu grup

 df[' lagged_values '] = df. groupby ([' group1 ', ' group2 '])[' values ']. shift ( 1 )

Należy pamiętać, że wartość funkcji shift() wskazuje liczbę wartości, dla których należy obliczyć przesunięcie.

Poniższe przykłady pokazują, jak zastosować każdą metodę w praktyce.

Przykład 1: Oblicz przesunięcie według grupy

Załóżmy, że mamy następującą ramkę danych pand, która pokazuje sprzedaż dokonaną przez dwa sklepy w kolejnych dniach:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]})
#view DataFrame
print (df)

  blind sales
0 to 18
1 to 10
2 to 14
3 to 13
4 B 19
5 B 24
6 B 25
7 B 29

Możemy użyć następującej składni, aby utworzyć kolumnę przesunięcia, która wyświetla sprzedaż z poprzedniego dnia dla każdego sklepu:

 #add column that displays lag of sales column by store
df[' lagged_sales '] = df. groupby ([' store '])[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

  store sales lagged_sales
0 to 18 NaN
1 to 10 18.0
2 A 14 10.0
3 A 13 14.0
4 B 19 NaN
5 B 24 19.0
6 B 25 24.0
7 B 29 25.0

Oto jak zinterpretować wynik:

  • Pierwszą wartością w kolumnie przesunięcia jest NaN , ponieważ w kolumnie sprzedaży sklepu A nie ma wcześniejszej wartości.
  • Druga wartość w kolumnie offset to 18 , ponieważ jest to poprzednia wartość w kolumnie sprzedaży dla sklepu A.

I tak dalej.

Przykład 2: Oblicz przesunięcie dla wielu grup

Załóżmy, że mamy następującą pandę DataFrame, która pokazuje sprzedaż dokonaną przez pracowników dwóch sklepów w kolejnych dniach:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' employee ':['O', 'O', 'R', 'R', 'O', 'O', 'R', 'R'],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]})
#view DataFrame
print (df)

  store employee sales
0 AO 18
1 AO 10
2 AR 14
3 AR 13
4 BO 19
5 BO 24
6 BR 25
7 BR 29

Możemy użyć następującej składni, aby utworzyć kolumnę przesunięcia, która wyświetla sprzedaż poprzedniego dnia dla każdego pracownika w każdym sklepie:

 #add column that displays lag of sales column by store and employee
df[' lagged_sales '] = df. groupby ([' store ',' employee '])[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

  store employee sales lagged_sales
0 AO 18 NaN
1 AO 10 18.0
2 AR 14 NaN
3 AR 13 14.0
4 BO 19 NaN
5 BO 24 19.0
6 BR 25 NaN
7 BR 29 25.0

Nowa kolumna lagged_sales wyświetla sprzedaż z poprzedniego dnia dla każdego pracownika w każdym sklepie.

Uwaga : w tym przykładzie pogrupowaliśmy według dwóch kolumn, ale możesz grupować według dowolnej liczby kolumn, włączając dowolną liczbę nazw zmiennych w funkcji groupby() .

Dodatkowe zasoby

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

Jak usunąć kolumny w Pandach
Jak wykluczyć kolumny w Pandach
Jak zastosować funkcję do wybranych kolumn w Pandach
Jak zmienić kolejność kolumn w Pandas DataFrame

Dodaj komentarz

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