ホームページ >バックエンド開発 >Python チュートリアル >Pandas GroupBy.agg() を使用して同じ列で複数の集計を実行するにはどうすればよいですか?

Pandas GroupBy.agg() を使用して同じ列で複数の集計を実行するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-06 17:50:151019ブラウズ

How Can I Perform Multiple Aggregations on the Same Column Using Pandas GroupBy.agg()?

Pandas GroupBy.agg() を使用した同じ列上の複数の集計

pandas では、GroupBy.agg() を使用して便利な集計を行うことができます。各列に関数を適用してデータを作成します。ただし、同じ列に異なる関数を適用する場合は、agg() を複数回呼び出す必要があります。

従来の (間違った) アプローチ:

直感的に簡単なアプローチは次のとおりです。 be:

df.groupby("dummy").agg({
    "returns": f1, 
    "returns": f2
})

残念ながら、重複によりエラーが発生しますkey.

解決策:

agg() は辞書を必要とするため、簡単な解決策は、列名と関数のリストを含む辞書を作成することです。

df.groupby("dummy").agg({
    "returns": [f1, f2]
})

これにより、両方の集計の出力を含むマルチインデックス DataFrame が生成されます。

例:

次のデータフレームを考えます:

import pandas as pd
import datetime as dt
import numpy as np

pd.np.random.seed(0)
df = pd.DataFrame({
    "date": [dt.date(2012, x, 1) for x in range(1, 11)],
    "returns": 0.05 * np.random.randn(10),
    "dummy": np.repeat(1, 10)
})

平均と合計の両方を「returns」列に適用するには:

df.groupby("dummy").agg({
    "returns": ["mean", "sum"]
})

これにより次のものが生成されます:

           returns          
           mean       sum
dummy                    
1      0.036901  0.369012

以上がPandas GroupBy.agg() を使用して同じ列で複数の集計を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。