Pandas の TimeGrouper 関数の代替
データのグループ化は、データを操作するときに実行される非常に一般的な操作です。 データを理解するために、関係や特定の値を確認するためにデータをグループ化する必要があることがよくあります。
Pandas 内では、いくつかの関数を使用して、特定の要件に基づいてデータフレームをグループ化できます。 そのような関数の 1つに、時間オブジェクトに基づいてデータをグループ化できる TimeGrouper
関数がありましたが、この関数は長い間廃止されてきました。
この記事では、Pandas の TimeGrouper
関数の代替とその使用方法について説明します。
TimeGrouper
関数は非推奨です
groupby
関数で使用されていた TimeGrouper
関数は、Pandas バージョン 0.21.0 で廃止され、に基づいてデータをグループ化できる pandas
Grouper() [関数](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 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