Seite 1 von 1

panda Frage zum Berechnen von kumulativen Summen

Verfasst: Montag 4. Mai 2020, 19:17
von lalelu169
Hallihallo,

bin Anfänger in pandas und habe es geschafft die folgende Datenstruktur zu erschaffen

Code: Alles auswählen

             S1        S2        S3        S4        S5        S6       S7
ZugNr                                                                     
2      (-30, 3)   (20, 2)   (20, 4)   (30, 1)   (30, 5)   (40, 0)  (40, 6)
2      (-30, 4)  (-20, 3)    (0, 2)   (10, 1)   (10, 5)   (20, 0)  (20, 6)
2      (-30, 3)   (20, 2)   (20, 4)   (30, 1)   (30, 5)   (40, 0)  (40, 6)
2      (-30, 3)  (-20, 1)  (-10, 2)  (-10, 4)    (0, 5)   (10, 0)  (10, 6)
2      (-30, 3)  (-20, 1)  (-10, 2)  (-10, 4)    (0, 5)   (10, 0)  (10, 6)
2      (-40, 3)  (-20, 2)  (-20, 4)  (-10, 0)  (-10, 1)  (-10, 5)   (0, 6)
2      (-30, 2)  (-20, 3)    (0, 4)   (10, 1)   (10, 5)   (20, 0)  (20, 6)
2      (-30, 3)  (-20, 1)  (-10, 2)  (-10, 4)    (0, 5)   (10, 0)  (10, 6)
2      (-30, 3)  (-20, 1)  (-10, 2)  (-10, 4)    (0, 5)   (10, 0)  (10, 6)
2      (-30, 3)  (-20, 1)  (-10, 2)  (-10, 4)    (0, 5)   (10, 0)  (10, 6)
Wie kann ich die ersten Zahlen in dem Tupel addieren?
Vielen Dank

Re: panda Frage zum Berechnen von kumulativen Summen

Verfasst: Montag 4. Mai 2020, 21:06
von einfachTobi
In welchem Tupel? Spaltenweise? Zeilenweise?
Grundsätzlich: https://pandas.pydata.org/pandas-docs/s ... e.sum.html. Für kumulative Summen: https://pandas.pydata.org/pandas-docs/s ... umsum.html.
Vermutlich ist es hilfreich die Werte nicht als Tupel sondern via Multiindex oder in einzelnen Spalten abzulegen.

Re: panda Frage zum Berechnen von kumulativen Summen

Verfasst: Montag 4. Mai 2020, 21:31
von lalelu169
Danke Tobi für die Antwort,

Eine Zeile besteht bei mir aus einer int und 7 Tupeln.
Es ist mir inzwischen auch klar geworden, dass es möglicherweise besser ist die Werte in einzelnen Spalten abzulegen.

Aber ich krieg das leider nicht hin. Wie kann ich denn auf die einzelnen Werte in den Tuopel zugreifen?
Vielen Dank

Re: panda Frage zum Berechnen von kumulativen Summen

Verfasst: Dienstag 5. Mai 2020, 08:05
von einfachTobi
Meine Frage nach ob zeilen- oder spaltenweise bezog sich auf die Summenbildung. Aber das ist auch in der Doku beschrieben und funktioniert sehr gut, wenn die abgelegten Daten keine Tupel sind. Bei Tupeln fällt mir gerade keine gute Möglichkeit ein, außer selbst über das DataFrame zu iterieren - was genau das wäre, was man mit einem DataFrame vermeiden will. Hier ein Beispiel wie es dann aussehen könnte:

Code: Alles auswählen

import pandas as pd
df = pd.DataFrame({"S1_1": [-30, -30],
                   "S1_2": [3, 4],
                   "S2_1": [20, -20],
                   "S2_2": [2, 3]})
print("Summen spaltenweise:)
print(f"S1_1:\t{df.S1_1.sum()}")
print(f"S1_2:\t{df.S1_2.sum()}")
print(f"S2_1:\t{df.S2_1.sum()}")
print(f"S2_2:\t{df.S2_2.sum()}")
print(f"Summen zeilenweise:\n{df.sum(axis=1)}")

Re: panda Frage zum Berechnen von kumulativen Summen

Verfasst: Dienstag 5. Mai 2020, 10:51
von DeaD_EyE

Code: Alles auswählen

cols = "ZugNr S1 S2 S3 S4 S5 S6 S7".split()
data = [
    (2, (-30, 3), (20, 2),  (20, 4),   (30, 1),   (30, 5),  (40, 0), (40, 6)),
    (2, (-30, 4), (-20, 3), (0, 2),    (10, 1),   (10, 5),  (20, 0), (20, 6)),
    (2, (-30, 3), (20, 2),  (20, 4),   (30, 1),   (30, 5),  (40, 0), (40, 6)),
    (2, (-30, 3), (-20, 1), (-10, 2),  (-10, 4),  (0, 5),   (10, 0), (10, 6)),
    (2, (-30, 3), (-20, 1), (-10, 2),  (-10, 4),  (0, 5),   (10, 0), (10, 6)),
    (2, (-40, 3), (-20, 2), (-20, 4),  (-10, 0),  (-10, 1), (-10, 5), (0, 6)),
    (2, (-30, 2), (-20, 3), (0, 4),    (10, 1),   (10, 5),  (20, 0),  (20, 6)),
    (2, (-30, 3), (-20, 1), (-10, 2),  (-10, 4),  (0, 5),   (10, 0),  (10, 6)),
    (2, (-30, 3), (-20, 1), (-10, 2),  (-10, 4),  (0, 5),   (10, 0),  (10, 6)),
    (2, (-30, 3), (-20, 1), (-10, 2),  (-10, 4),  (0, 5),   (10, 0),  (10, 6)),
    ]
df = pd.DataFrame(data=data, columns=cols)
df.loc[:, "S1":] = df.loc[:, "S1":].apply(lambda x: [sum(y) for y in x])
Ich glaube das macht das was du willst.
Wichtig ist der Teil mit apply.

Re: panda Frage zum Berechnen von kumulativen Summen

Verfasst: Mittwoch 6. Mai 2020, 22:32
von lalelu169
super. Vielen Dank