Pandas: groupby()를 사용하여 시계열을 리샘플링하는 방법
시계열 데이터를 리샘플링한다는 것은 새로운 기간에 걸쳐 데이터를 집계하는 것을 의미합니다.
groupby 연산자를 사용하여 pandas에서 시계열을 다시 샘플링하려면 다음 기본 구문을 사용할 수 있습니다.
group = df. groupby ([pd. Group (freq=' W '), ' store ']) result = group[' sales ']. sum (). unstack (' store '). fillna (0)
이 특정 예는 매장 열별로 DataFrame의 행을 그룹화한 다음 시계열을 주별로 다시 샘플링하고( freq=’W’ ) 판매 열에 있는 값의 합계를 계산합니다.
시계열 데이터를 다음을 포함하여 다양한 기간으로 다시 샘플링할 수 있습니다.
- S : 초
- min : 분
- H : 시간
- J :일
- 여 : 주
- 남 : 월
- Q : 분기
- A : 연도
다음 예에서는 실제로 그룹 별 작업을 사용하여 시계열 데이터를 리샘플링하는 방법을 보여줍니다.
예: Pandas에서 groupby를 사용하여 시계열 리샘플링
두 개의 서로 다른 매장에서 매일 발생한 총 매출을 보여주는 다음과 같은 pandas DataFrame이 있다고 가정합니다.
import pandas as pd #createDataFrame df = pd. DataFrame ({' sales ': [13, 14, 17, 17, 16, 22, 28, 10, 17, 10, 11], ' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B']} , index=pd. date_range ('2023-01-06', '2023-01-16', freq='d')) #view DataFrame print (df) sales store 2023-01-06 13 A 2023-01-07 14 A 2023-01-08 17 A 2023-01-09 17 A 2023-01-10 16A 2023-01-11 22 B 2023-01-12 28 B 2023-01-13 10 B 2023-01-14 17 B 2023-01-15 10 B 2023-01-16 11 B
매장 별로 행을 그룹화한 다음 주별로 시계열을 다시 샘플링한 다음 판매 열의 값 합계를 계산한다고 가정해 보겠습니다.
이를 위해 다음 구문을 사용할 수 있습니다.
#group by store and resample time series by week group = df. groupby ([pd. Group (freq=' W '), ' store ']) #calculate sum of sales each week by store result = group[' sales ']. sum (). unstack (' store '). fillna (0) #view results print (result) store AB 2023-01-08 14.0 0.0 2023-01-15 16.5 17.0 2023-01-22 0.0 11.0
결과에서 우리는 다음을 볼 수 있습니다:
- 매장 A에서 2023년 1월 8일로 끝나는 주 동안의 매출 합계는 14 입니다.
- 매장 B에서 2023년 1월 8일로 끝나는 주 동안의 매출 합계는 0 입니다.
등등.
이 예에서는 판매 열의 값 합계를 계산하도록 선택했습니다.
그러나 개수, 평균, 중앙값, 최소값, 최대값 등과 같은 다른 측정항목을 선택할 수도 있습니다.
간단히 위 코드의 sum() 을 count() , Mean() , Median() 등으로 바꾸세요. 원하는 측정항목을 계산합니다.
추가 리소스
다음 튜토리얼에서는 Python에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
Matplotlib에서 시계열을 그리는 방법
Seaborn에서 시계열을 그리는 방법
Python의 시계열에서 MAPE를 계산하는 방법