Pandas의 TimeGrouper 기능에 대한 대안

Olorunfemi Akinlua 2023년6월21일
  1. TimeGrouper 기능이 더 이상 사용되지 않음
  2. Grouper() 함수 사용
Pandas의 TimeGrouper 기능에 대한 대안

데이터 그룹화는 데이터로 작업할 때 수행되는 매우 일반적인 작업입니다. 데이터를 이해하려면 데이터를 그룹화하여 관계나 특정 값을 확인해야 하는 경우가 많습니다.

Pandas 내에서 몇 가지 기능을 사용하여 특정 요구 사항에 따라 데이터 프레임을 그룹화할 수 있습니다. 이러한 기능 중 하나는 시간 개체를 기반으로 데이터를 그룹화할 수 있는 TimeGrouper 기능이었지만 이 기능은 오랫동안 사용되지 않았습니다.

이 기사에서는 Pandas의 TimeGrouper 기능에 대한 대안과 사용 방법에 대해 설명합니다.

TimeGrouper 기능이 더 이상 사용되지 않음

groupby 기능과 함께 사용된 TimeGrouper 기능은 Pandas Grouper() 함수를 선호하여 Pandas 버전 0.21.0에서 오랫동안 사용되지 않습니다. 개체에 대한 groupby 명령(time 개체 포함).

Grouper() 함수 사용

언급한 바와 같이 Grouper() 함수를 사용하면 사용자가 개체에 대한 groupby() 함수를 지정하고 그룹화가 발생하는 주요 매개 변수로 원하는 열을 선택할 수 있습니다.

예를 들어 DateTime 열 외에 DateTime이 아닌 열을 그룹화할 때 groupby()pd.Grouper()를 사용하기에 적절한 위치입니다. 빈도로만 그룹화해야 하는 경우에는 항상 resample()을 사용할 수 있습니다.

Grouper()가 DateTime이 아닌 열을 그룹화하고 freq 인수에 전달된 M에 의해 정의되는 month-end frequency를 사용하여 작동하는 방식을 설명하겠습니다.

먼저 numpy 라이브러리를 사용하여 그룹화할 데이터를 생성해 보겠습니다.

암호:

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': np.random.choice(['x', 'y'], size=50),
                       'b': np.random.rand(50)},
                      index=pd.date_range('2022', periods=50))
print(df.head())

출력:

            a         b
2022-01-01  x  0.365385
2022-01-02  y  0.484075
2022-01-03  y  0.863266
2022-01-04  x  0.319142
2022-01-05  x  0.386386

이제 데이터가 있으므로 계산된 그룹화의 평균을 사용하여 월말 빈도를 기반으로 그룹화하여 데이터에 Grouper() 함수를 사용하겠습니다.

newDf = df.groupby(pd.Grouper(freq="M")).mean()
print(newDf)

출력:

                   b
2022-01-31  0.582896
2022-02-28  0.451495

따라서 월말 빈도를 기반으로 데이터를 성공적으로 그룹화했습니다. 또한 a 열과 월말 빈도를 기준으로 계산된 그룹화의 평균을 사용하여 데이터를 그룹화할 수 있습니다.

otherDf = df.groupby([pd.Grouper(freq="M"), "a"]).mean()
print(otherDf)

출력:

                     b
           a          
2022-01-31 x  0.401720
           y  0.473320
2022-02-28 x  0.760869
           y  0.312064
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

관련 문장 - Pandas Function