ホームページ > ウェブフロントエンド > jsチュートリアル > Python の「groupby」メソッドはどのようにしてオブジェクトの配列からデータを効率的にグループ化し、集約できるのでしょうか?

Python の「groupby」メソッドはどのようにしてオブジェクトの配列からデータを効率的にグループ化し、集約できるのでしょうか?

Susan Sarandon
リリース: 2024-12-22 20:55:11
オリジナル
872 人が閲覧しました

How can Python's `groupby` method efficiently group and aggregate data from arrays of objects?

GroupBy メソッドを使用した配列内のオブジェクトのグループ化

Python の強力な groupby メソッドを使用すると、選択した属性に基づいてオブジェクトを効率的にグループ化できます。このようなグループ化操作を実行する必要がある場合、groupby が便利なソリューションを提供します。

たとえば、次のオブジェクトの配列を考えてみましょう:

[ 
    { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" },
    { Phase: "Phase 1", Step: "Step 1", Task: "Task 2", Value: "10" },
    { Phase: "Phase 1", Step: "Step 2", Task: "Task 1", Value: "15" },
    { Phase: "Phase 1", Step: "Step 2", Task: "Task 2", Value: "20" },
    { Phase: "Phase 2", Step: "Step 1", Task: "Task 1", Value: "25" },
    { Phase: "Phase 2", Step: "Step 1", Task: "Task 2", Value: "30" },
    { Phase: "Phase 2", Step: "Step 2", Task: "Task 1", Value: "35" },
    { Phase: "Phase 2", Step: "Step 2", Task: "Task 2", Value: "40" }
]
ログイン後にコピー

フェーズごとにオブジェクトをグループ化し、合計を計算するには

from itertools import groupby

def sum_value(objects):
    return sum(int(obj["Value"]) for obj in objects)

objects.sort(key=lambda obj: obj["Phase"])
grouped_by_phase = groupby(objects, key=lambda obj: obj["Phase"])

result = [{
    "Phase": phase,
    "Value": sum_value(objects)
} for phase, objects in grouped_by_phase]

print(result)
ログイン後にコピー

これにより、目的の値が得られます。出力:

[{"Phase": "Phase 1", "Value": 50}, {"Phase": "Phase 2", "Value": 130}]
ログイン後にコピー

フェーズとステップの両方でグループ化するには、複数レベルの groupby を使用できます:

grouped_by_phase_and_step = groupby(objects, key=lambda obj: (obj["Phase"], obj["Step"]))

result = [{
    "Phase": phase,
    "Step": step,
    "Value": sum_value(objects)
} for (phase, step), objects in grouped_by_phase_and_step]

print(result)
ログイン後にコピー

これは次を返します:

[{"Phase": "Phase 1", "Step": "Step 1", "Value": 15}, {"Phase": "Phase 1", "Step": "Step 2", "Value": 35}, {"Phase": "Phase 2", "Step": "Step 1", "Value": 55}, {"Phase": "Phase 2", "Step": "Step 2", "Value": 75}]
ログイン後にコピー

Python の汎用性の高い groupby メソッドを使用すると、オブジェクトの配列からデータを簡単かつ効率的にグループ化し、さまざまなグループ化に対応できます。要件。

以上がPython の「groupby」メソッドはどのようにしてオブジェクトの配列からデータを効率的にグループ化し、集約できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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