Pandas の TimeGrouper 関数の代替

Olorunfemi Akinlua 2023年6月21日
  1. TimeGrouper 関数は非推奨です
  2. Grouper() 関数を使用する
Pandas の TimeGrouper 関数の代替

データのグループ化は、データを操作するときに実行される非常に一般的な操作です。 データを理解するために、関係や特定の値を確認するためにデータをグループ化する必要があることがよくあります。

Pandas 内では、いくつかの関数を使用して、特定の要件に基づいてデータフレームをグループ化できます。 そのような関数の 1つに、時間オブジェクトに基づいてデータをグループ化できる TimeGrouper 関数がありましたが、この関数は長い間廃止されてきました。

この記事では、Pandas の TimeGrouper 関数の代替とその使用方法について説明します。

TimeGrouper 関数は非推奨です

groupby 関数で使用されていた TimeGrouper 関数は、Pandas バージョン 0.21.0 で廃止され、に基づいてデータをグループ化できる pandasGrouper() [関数](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Grouper.html) が使用されました。 オブジェクト (time オブジェクトを含む) の groupby 命令。

Grouper() 関数を使用する

前述のように、Grouper() 関数 を使用すると、ユーザーはオブジェクトに対して groupby() 関数を指定し、グループ化が発生するキー パラメーターとして必要な列を選択できます。

たとえば、DateTime 列に加えて非 DateTime 列でグループ化する場合、groupby()pd.Grouper() を使用する適切な場所です。 頻度のみをグループ化する必要がある場合は、いつでも resample() を使用できます。

Grouper() が DateTime 以外の列でグループ化し、freq 引数 に渡される M によって定義される 月末の頻度 を使用する方法を説明しましょう。

まず、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