Pandas dataframe에서 주별로 그룹화하는 방법(예제 포함)


다음 기본 구문을 사용하여 Pandas DataFrame에서 행을 주별로 그룹화할 수 있습니다.

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' values ']. sum ()

이 특정 공식은 날짜 열의 행을 주별로 그룹화하고 DataFrame의 열에 대한 값의 합계를 계산합니다.

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

예: Pandas에서 주별로 그룹화하는 방법

다양한 날짜에 회사의 매출을 보여주는 다음과 같은 pandas DataFrame이 있다고 가정해 보겠습니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' date ': pd. date_range (start='1/5/2022', freq='D', periods=15),
                   ' sales ': [6, 8, 9, 5, 4, 8, 8, 3, 5, 9, 8, 3, 4, 7, 7]})

#view DataFrame
print (df)

         dirty date
0 2022-01-05 6
1 2022-01-06 8
2 2022-01-07 9
3 2022-01-08 5
4 2022-01-09 4
5 2022-01-10 8
6 2022-01-11 8
7 2022-01-12 3
8 2022-01-13 5
9 2022-01-14 9
10 2022-01-15 8
11 2022-01-16 3
12 2022-01-17 4
13 2022-01-18 7
14 2022-01-19 7

관련 항목:Pandas에서 날짜 범위를 만드는 방법

다음 구문을 사용하여 주별로 그룹화된 매출 합계를 계산할 수 있습니다.

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. sum ()

date
2022-01-02 32
2022-01-09 44
2022-01-16 18
Freq: W-SUN, Name: sales, dtype: int64

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

  • 2022년 1월 2일 이후부터 시작하는 주 동안 총 32 건의 판매가 발생했습니다.
  • 2022년 1월 9일 이후부터 일주일 동안 총 44 건의 판매가 있었습니다.
  • 2022년 1월 16일 이후부터 일주일 동안 총 18 건의 판매가 이루어졌습니다.

기본적으로 팬더는 주가 일요일 다음 날( W-SUN )에 시작한다고 가정합니다.

그러나 설명서 에 따르면 Freq 에 대해 이 값을 변경할 수 있습니다.

예를 들어, 매주 월요일 다음 날(예: 화요일)부터 시작하도록 하려면 Freq=W-MON을 지정할 수 있습니다.

유사한 구문을 사용하여 주별로 그룹화된 최대 판매액을 계산할 수 있습니다.

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate max of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. max ()

date
2022-01-02 9
2022-01-09 9
2022-01-16 7
Freq: W-SUN, Name: sales, dtype: int64

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

  • 2022년 1월 2일 이후부터 시작하는 주 동안 일일 최대 판매량은 9 입니다.
  • 2022년 1월 9일 이후부터 일주일간 하루 최대 판매 건수는 9건 입니다.
  • 2022년 1월 16일 이후부터 일주일간 하루 최대 판매 건수는 7건 입니다.

참고 : 여기에서 pandas의 groupby 작업에 대한 전체 문서를 찾을 수 있습니다.

추가 리소스

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

Pandas DataFrame에서 월별로 그룹화하는 방법
Pandas DataFrame에서 날짜별로 그룹화하는 방법
Pandas에서 Groupby를 사용하고 조건부로 계산하는 방법

의견을 추가하다

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