Pandas: diff와 함께 groupby를 사용하는 방법
다음 기본 구문을 사용하여 pandas에서 diff( ) 함수와 함께 groupby() 함수를 사용할 수 있습니다.
df = df. sort_values (by=[' group_var1 ', ' group_var2 ']) df[' diff '] = df. groupby ([' group_var1 '])[' values_var ']. diff (). fillna ( 0 )
이 특정 예에서는 두 개의 특정 변수를 기준으로 DataFrame의 행을 정렬한 다음 group_var1 을 기준으로 그룹화하고 value_var 열의 행 간의 차이를 계산합니다.
fillna(0) 는 그룹 변수의 값이 DataFrame의 연속 라인 사이에서 변경될 때마다 팬더에게 0을 삽입하도록 지시합니다.
다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.
예: Pandas에서 diff와 함께 groupby를 사용하는 방법
서로 다른 날짜에 서로 다른 두 매장의 총 매출을 포함하는 다음과 같은 pandas DataFrame이 있다고 가정합니다.
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 열에는 매장별로 그룹화된 연속 날짜 간의 매출 값 차이가 포함됩니다.
예를 들어 다음을 볼 수 있습니다.
- 2022년 1월 1일과 2022년 2월 1일 사이에 매장 A의 매출 차이는 3 입니다.
- 2022년 2월 1일과 2022년 3월 1일 사이에 매장 A의 매출 차이는 9 입니다.
- 2022년 1월 3일과 2022년 1월 4일 사이에 매장 A의 매출 차이는 0 입니다.
등등.
추가 리소스
다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
Pandas에서 GroupBy 합계를 수행하는 방법
Pandas에서 Groupby 및 Plot을 사용하는 방법
Pandas에서 GroupBy를 사용하여 고유한 값을 계산하는 방법