Python - einzelne Werte aus Dataframe "ziehen"?
Hallo,
folgende Situation: Ich habe einen DataFrame in Python, der jeden der 365 Tage im Jahr eine mittlere Temperatur zuordnet. Durch eine Berechnungsvorschrift soll eine äquivalente Tages-Mittel-Temperatur wie folgt berechnet werden:
Tm,ä = 0.5 * Tm_(d) + 0.3 * Tm_(d-1) + 0.15 * Tm_(d-2) + 0.05 * Tm_(d-3)
Das heißt, ich müsste ja erstmal jedes Element im DataFrame der Spalte "Temperatur" und die der drei Vorgängertage ansprechen, sie gemäß der obigen Formel verrechnen und diese 365 Werte von Tm,ä dann in einem neuen DataFrame speichern, sodass ich sie weiter verwenden kann. Außerdem tritt für die ersten Tage ein Sonderfall ein, da es ja hier nicht ausreichend Vorgängertage gibt, wobei das mein geringstes Problem ist. Wie genau fange ich an? Wahrscheinlich ist es ganz trivial, aber ich bin ein kompletter Neuling, was Programmieren angeht. Ich dachte sofort an eine for-Schleife, aber wie manage ich das mit der Formel und dem neuen DataFrame?
Vielen Dank für eure Antworten!
2 Antworten
Um die Frage beantworten zu können, müßtest Du natürlich erstmal die Datenstruktur und deren Aufbau darlegen.
Du kannst in Python iterables einfach slicen, Setzt aber eben voraus, daß ein solcher vorliegt.
Hier mal exemplarisch eine Liste:
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l[-3:]
[7, 8, 9]
>>> sum(l[-3:])
24
Ich verstehe die Frage nicht ganz, du hast doch bereits beschrieben, was du machen muss: Über die 365 Tage iterieren, jeweils die Formel anwenden und das Ergebnis in einen neuen Array schreiben (bzw. in einen DataFrame, kenne die Struktur jetzt nicht).
Oder verstehe ich was falsch?
Irgendwie habe ich das Gefühl, dass du es dir zu kompliziert machst. Du brauchst dafür gar keine speziellen Datentypen oder Methoden, sondern einfach nur zwei simple Listen.
Also Pseudocode:
Tm = [ 4.1, 4.2, 4.4, 4.6 ...... ] (365 Einträge)
Tä = []*365 (leere Liste mit 365 Slots)
for i=3 to 365:
Tä[i] = Tm[i] * 0.5 + Tm[i-1] * 0.3 ... (deine Formel)
That's it.
Du hast schon recht, konzeptionell verstehe ich die Aufgabenstellung, aber es ist so, dass es mir beim Programmieren oft an Handwerklichem mangelt; heißt, ich weiß oft nicht, wie ich meinen Plan in Code übersetze. Ich versuche es jetzt mit der "iterrows" Methode für den DataFrame und mit der "insert" Methode für die Liste.