Pandas: 그룹당 이동 평균을 계산하는 방법


다음 기본 구문을 사용하여 팬더의 그룹 이동 평균을 계산할 수 있습니다.

 #calculate 3-period moving average of 'values' by 'group'
df. groupby (' group ')[' values ']. transform ( lambda x: x.rolling (3,1) .mean ())

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

예: Pandas에서 그룹별 이동 평균 계산

5개 판매 기간 동안 두 매장의 총 매출을 보여주는 다음과 같은 pandas DataFrame이 있다고 가정합니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' period ': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
                   ' sales ': [7, 7, 9, 13, 14, 13, 13, 19, 20, 26]})

#view DataFrame
df

	store period sales
0 to 1 7
1 to 2 7
2 to 3 9
3 to 4 13
4 to 5 14
5 B 1 13
6 B 2 13
7 B 3 19
8 B 4 20
9 B 5 26

다음 코드를 사용하여 각 매장의 3일 연속 판매 평균을 계산할 수 있습니다.

 #calculate 3-day moving average of sales by store
df[' ma '] = df. groupby (' store ')[' sales ']. transform ( lambda x: x.rolling (3,1) .mean ())

#view updated DataFrame
df

        store period sales ma
0 A 1 7 7.000000
1 to 2 7 7.000000
2 A 3 9 7.666667
3 A 4 13 9.666667
4 A 5 14 12.000000
5 B 1 13 13.000000
6 B 2 13 13.000000
7 B 3 19 15.000000
8 B 4 20 17.333333
9 B 5 26 21.666667

참고 : x.rolling(3, 1)은 3개 기간에 대한 이동 평균을 계산하고 최소 기간 수로 1이 필요함을 의미합니다.

‘내’ 열에는 각 매장의 3일 이동 판매 평균이 표시됩니다.

다른 이동 평균을 계산하려면 Rolling() 함수의 값을 변경하면 됩니다.

예를 들어 각 매장의 2일 이동 평균 매출을 대신 계산할 수 있습니다.

 #calculate 2-day moving average of sales by store
df[' ma '] = df. groupby (' store ')[' sales ']. transform ( lambda x: x.rolling (2,1) .mean ())

#view updated DataFrame
df

        store period sales ma
0 to 1 7 7.0
1 to 2 7 7.0
2 to 3 9 8.0
3 A 4 13 11.0
4 to 5 14 13.5
5 B 1 13 13.0
6 B 2 13 13.0
7 B 3 19 16.0
8 B 4 20 19.5
9 B 5 26 23.0

추가 리소스

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

Pandas에서 GroupBy 합계를 수행하는 방법
Pandas에서 GroupBy를 사용하여 고유한 값을 계산하는 방법
Pandas에서 Groupby 및 Plot을 사용하는 방법

의견을 추가하다

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