Pandas에서 그룹당 오프셋을 계산하는 방법


다음 방법을 사용하여 Pandas DataFrame에서 그룹 이동 값을 계산할 수 있습니다.

방법 1: 그룹별 오프셋 계산

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

방법 2: 여러 그룹의 오프셋 계산

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

Shift() 함수의 값은 이동을 계산할 값의 수를 나타냅니다.

다음 예에서는 각 방법을 실제로 사용하는 방법을 보여줍니다.

예시 1: 그룹별 오프셋 계산

연속된 날짜에 두 매장의 매출을 보여주는 다음과 같은 pandas DataFrame이 있다고 가정해 보겠습니다.

 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

다음 구문을 사용하여 각 매장의 전날 매출을 표시하는 오프셋 열을 만들 수 있습니다.

 #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

결과를 해석하는 방법은 다음과 같습니다.

  • 매장 A의 판매 열에 이전 값이 없으므로 오프셋 열의 첫 번째 값은 NaN 입니다.
  • 오프셋 열의 두 번째 값은 매장 A에 대한 판매 열의 이전 값이므로 18 입니다.

등등.

예 2: 여러 그룹의 오프셋 계산

연속된 날짜에 두 매장 직원의 매출을 보여주는 다음과 같은 pandas DataFrame이 있다고 가정합니다.

 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

다음 구문을 사용하여 각 매장의 각 직원에 대한 전날 매출을 표시하는 오프셋 열을 만들 수 있습니다.

 #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

새로운 lagged_sales 열에는 각 매장의 각 직원에 대한 전날 매출이 표시됩니다.

참고 : 이 예에서는 두 개의 열로 그룹화했지만, groupby() 함수에 원하는 만큼의 변수 이름을 포함하여 원하는 만큼의 열로 그룹화할 수 있습니다.

추가 리소스

다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

Pandas에서 열을 삭제하는 방법
Pandas에서 열을 제외하는 방법
Pandas에서 선택한 열에 함수를 적용하는 방법
Pandas DataFrame에서 열 순서를 변경하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다