Heim >Web-Frontend >js-Tutorial >Wie kann die „groupby'-Methode von Python Daten aus Arrays von Objekten effizient gruppieren und aggregieren?

Wie kann die „groupby'-Methode von Python Daten aus Arrays von Objekten effizient gruppieren und aggregieren?

Susan Sarandon
Susan SarandonOriginal
2024-12-22 20:55:11966Durchsuche

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

Gruppieren von Objekten in Arrays mithilfe der GroupBy-Methode

Pythons leistungsstarke Groupby-Methode ermöglicht eine effiziente Gruppierung von Objekten basierend auf ausgewählten Attributen. Wenn Sie solche Gruppierungsvorgänge durchführen müssen, bietet Groupby eine praktische Lösung.

Betrachten Sie beispielsweise die folgende Anordnung von Objekten:

[ 
    { 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" }
]

Um die Objekte nach Phase zu gruppieren und die Summe zu berechnen of Value verwenden wir:

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)

Dies ergibt die gewünschte Ausgabe:

[{"Phase": "Phase 1", "Value": 50}, {"Phase": "Phase 2", "Value": 130}]

Alternativ zum Gruppieren nach Sowohl Phase als auch Schritt können wir mehrere Ebenen von Groupby verwenden:

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)

Dies gibt Folgendes zurück:

[{"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}]

Mit der vielseitigen Groupby-Methode von Python können Sie Daten einfach und effizient gruppieren und aggregieren Arrays von Objekten, die Ihren verschiedenen Gruppierungsanforderungen entsprechen.

Das obige ist der detaillierte Inhalt vonWie kann die „groupby'-Methode von Python Daten aus Arrays von Objekten effizient gruppieren und aggregieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn