GOOGLE ADS

Donnerstag, 28. April 2022

Wie führt man Berechnungen für bestimmte Zeilen in Pandas durch?

Ich habe einen Datenrahmen mit Verkaufsmenge für eine Liste von Produkten. Jedem Produkt ist ein Design-/Sortimentname zugeordnet. Innerhalb jedes Designs können mehrere Produkte vorhanden sein. Wie kann ich Berechnungen nur innerhalb eines bestimmten Designs durchführen, um die Umsatzaufteilung zu ermitteln? Ich möchte herausfinden, wie viel Prozent eines bestimmten Sortiments von einem bestimmten Produkt stammen. Bisher konnte ich nur die gesamte Liste der Produkte nehmen und den prozentualen Anteil jedes einzelnen an der Gesamtverkaufsmenge berechnen.

Ursprünglicher Datenrahmen:

id Product Range Quantity
1 Prod1 A 6
2 Prod2 A 4
3 Prod3 B 2
4 Prod4 B 8

Datenrahmen nach Berechnung:

id Product Range Quantity % of range
1 Prod1 A 6 60%
2 Prod2 A 4 40%
3 Prod3 B 2 20%
4 Prod4 B 8 80%


Lösung des Problems

Sie benötigen eine einfache Methode groupby.transform('sum'), um die Gesamtsumme pro Gruppe zu erhalten, und führen dann eine klassische Vektorarithmetik durch.

Ich habe ein Beispiel als Float und eines als String bereitgestellt:

total = df.groupby('Range')['Quantity'].transform('sum')
# as float
df['% of range'] = df['Quantity'].div(total)
# as string
df['% of range (str)'] = df['Quantity'].div(total).mul(100).astype(int).astype(str) + ' %'

Ausgang:

 id Product Range Quantity % of range % of range (str)
0 1 Prod1 A 6 0.6 60 %
1 2 Prod2 A 4 0.4 40 %
2 3 Prod3 B 2 0.2 20 %
3 4 Prod4 B 8 0.8 80 %

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...