ホームページ > バックエンド開発 > Python チュートリアル > Pandas でグループ化された DataFrame 列に複数の関数を効率的に適用するにはどうすればよいですか?

Pandas でグループ化された DataFrame 列に複数の関数を効率的に適用するにはどうすればよいですか?

DDD
リリース: 2024-12-16 15:47:14
オリジナル
361 人が閲覧しました

How Can I Efficiently Apply Multiple Functions to Grouped DataFrame Columns in Pandas?

グループ化された列に複数の関数を効率的に適用する

Series の groupby オブジェクトとは異なり、ディクショナリを使用して DataFrame の groupby オブジェクトに複数の関数を適用するのは簡単ではありません。ただし、次のメソッドを使用してこれを効率的に実現する方法があります。

apply メソッドの使用

必要な関数が個々の列で動作する場合は、apply メソッドを利用します。適切なオプション。 apply メソッドを使用すると、グループ全体 (DataFrame) を別のオブジェクトに変換する関数を渡すことができます。例:

grouped = df.groupby('group')
aggregated = grouped.apply(lambda x: pd.Series({
    'a_sum': x['a'].sum(),
    'a_max': x['a'].max(),
    'b_mean': x['b'].mean(),
}))
ログイン後にコピー

このアプローチは、複数の列を効率的に集約し、目的の列を含む DataFrame を返します。

apply からシリーズを返す

対話する必要がある複数の列を処理する場合、agg メソッドは暗黙的に Series を集計関数に渡すため、使用できません。代わりに、Series を返すカスタム関数を作成できます。例:

def aggregate_group(x):
    return pd.Series({
        'a_sum': x['a'].sum(),
        'b_mean': x['b'].mean(),
        'c_d_prod': (x['c'] * x['d']).sum()
    })

grouped = df.groupby('group')
result = grouped.apply(aggregate_group)
ログイン後にコピー

このメソッドを使用すると、複数のグループ化された列に複数の関数を適用し、単一のステップで結果を返すことができます。

関数名のカスタマイズ

必要に応じて、__name__ 属性を使用して関数にカスタム名を割り当てることができます。関数を定義した後、__name__ を目的の名前に設定するだけで、生成される列の明瞭さが向上します。

ループを使用して groupby オブジェクトを反復処理することは、一般に上記の方法に比べて効率が低いことに注意してください。 Pandas はベクトル化された操作用に最適化されており、これらの組み込みメソッドが効率的なグループレベルの分析に推奨されるアプローチになっています。

以上がPandas でグループ化された DataFrame 列に複数の関数を効率的に適用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート