Pandas Series

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Moschi96
User
Beiträge: 6
Registriert: Dienstag 8. Dezember 2020, 14:04

Hallo zusammen,
Ich bin grade etwas ratlos. Ich habe eine Pandas Series mit Temperatur Werten die für ein Jahr stündlich aufgelistet sind.
Jetzt möchte ich diese Series mit 7860 Einträgen in ein DataFrame übergeben, welches für je 24 Stunden diese Temperaturen in ein columns packt.
Hat einer von euch eine Idee? Ich lese mir jetzt seit 3 Tagen die Augen aus und weiß immer noch nicht weiter. Mit einem loop hat es nicht geklappt.
Ich stehe noch ziemlich am Anfang meiner Python Karriere und weiß eventuell nicht, ob ich nicht schlichtweg falsch gesucht habe, falls es so ist und ich es einfach nicht sehe, sorry.
Danke für eure Hilfe.
Beste Grüße
Nils
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Du hast also ein DataFrame mit einer Spalte "Time" in der stündliche Zeitangaben sind und eine Spalte in der für jede Stunde die gemessene Temperatur steht und du möchtest den Mittelwert pro Trag herausfinden oder die Werte einfach nur aufsummieren?

Also sowas?:

Code: Alles auswählen

                    Time  Temperatur
0    2020-01-01 00:00:00           3
1    2020-01-01 01:00:00           1
2    2020-01-01 02:00:00           1
3    2020-01-01 03:00:00          31
4    2020-01-01 04:00:00          21
...                  ...         ...
8756 2020-12-30 20:00:00          20
8757 2020-12-30 21:00:00          25
8758 2020-12-30 22:00:00          24
8759 2020-12-30 23:00:00           2
8760 2020-12-31 00:00:00          25
und willst sowas?:

Code: Alles auswählen

            Temperatur
Time
2020-01-01   16.166667
2020-01-02   17.000000
2020-01-03   15.250000
2020-01-04   13.166667
2020-01-05   17.625000
...                ...
2020-12-27   14.125000
2020-12-28   15.666667
2020-12-29   14.666667
2020-12-30   16.041667
2020-12-31   25.000000
Moschi96
User
Beiträge: 6
Registriert: Dienstag 8. Dezember 2020, 14:04

1 0.8
2 -1.9
3 -4.0
4 -4.4
5 -4.7
...
8756 8.0
8757 7.6
8758 7.5
8759 6.1
8760 3.9

Name: t, dtype: float64

Ich habe eher so etwas und möchte es in der Form

Index "1" "2" "3" ........"3760"
1. 2. 4. 5. ........13
2
3
4
5
.
.
.
24
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Also hast du eine Series mit Temperaturwerten und eine mit Zeitangaben, die würdest du gerne zusammenfügen? Es wäre hilfreich wenn du bisschen genauer dein Problem beschreiben würdest, also was für Daten du hast, wie die aussehen, was du damit machen willst, wie es nachher aussehen soll. Je mehr Infos desto besser kann sich jemand da hineinversetzen. So kann ich da leider nichts mit Anfangen.
Benutzeravatar
__blackjack__
User
Beiträge: 13927
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Also wenn ich es richtig verstanden habe gibt's Messwerte für ein Jahr, 24 Pro Tag, und jetzt soll DataFrame mit einem Tag pro Spalte daraus werden.

Wofür wird das denn gebraucht? Zum weiterverarbeiten ist die ”Langform” üblicherweise besser.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
Moschi96
User
Beiträge: 6
Registriert: Dienstag 8. Dezember 2020, 14:04

Ich habe vor von jedem Tag, also jedes 24-H Intervall die Durchnschnittstemp. und das Intervall der min(),max() Temp. in ein Diagramm aufzutragen und mit weiteren Messwerten zu vergleichen. Ich habe nur eine Series mit Temperaturen.
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

So ganz habe ich das glaube ich immer noch nicht verstanden. Möchtest du also eine Dataframe wo auf der einen Achse die Stunden von 0-23 stehen und auf der anderen Achse welcher Tag?

Also so in die Richtung (hab jetz für die Temperatur irgendwelche random Nummern genommen):

Code: Alles auswählen

    0.0    1.0    2.0    3.0    4.0    5.0    6.0    7.0    8.0    9.0    10.0   11.0   12.0   13.0   14.0   ...  350.0  351.0  352.0  353.0  354.0  355.0  356.0  357.0  358.0  359.0  360.0  361.0  362.0  363.0  364.0
0      20      2      0     11     11     31     30      0     26     20     30      8      8     17      4  ...     25      8      7     11      1     21      9      4     10      7     30     15     12     21     17     
1      23     25     17     27     26      6     17     12     12     17     26     26     29     20     16  ...     19      1     14     27      3     17     19     15      3     25     10     25      1     31     12     
2       4     25     18     26     25      9     14     16     27     10      3     17     14      7     31  ...     21     23      1     11     16      7     30     30     14     23     17     19     24     25     20     
3       8      3      0     16     14      9     12      0      6      9      5     10     25     30     31  ...     28     27     14      7      9     10     17     16     29     16     16     25     13     21     22     
4       5      9     18      2      6      1     22     31     18     24     10     27     26     27     25  ...     18     25     10     11      3     29     13      7     11      9     31     22     19     26     25     
5      14     18      5     29     20      7     18      3      1     15      1     23     24      5     13  ...     21      3     28     18     22     28     14     17      8     14     28      0     11     25     15     
...   
20     16      0     14      8     24      2     27     28      2      3      2      5     14     10     11  ...     28      4     23      0     30      2     20     30     26     19     27     25      8     14      7     
21     27     12     22     25     29      2     11     20     23     20     12     19      4     10     19  ...      4      3      3      4      5     22     29     26      4     13     22     29      9      3     30     
22      0      4      6     18     20     27     29      9      3     25     14     28     26      3     22  ...     22     28     14      6      3     28     15     23     10     22     18     25      7     29     30     
23     19     16     13     31      4     16      7     12     15     31     10     31      3     17     14  ...     26      5     21      1     30     13     18      2      1      7     25     25     28      5      8  
Benutzeravatar
__blackjack__
User
Beiträge: 13927
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Moschi96: Vergiss das mit dem umformatieren — die Daten sind schon im richtigen Format. Gruppiere nach Tagen und berechne was Du berechnen willst.

Code: Alles auswählen

In [270]: temperature                                                           
Out[270]: 
2019-01-01 00:00:00     -1
2019-01-01 01:00:00     -1
2019-01-01 02:00:00     -4
2019-01-01 03:00:00     -6
2019-01-01 04:00:00     -7
                      ... 
2019-12-31 19:00:00   -265
2019-12-31 20:00:00   -266
2019-12-31 21:00:00   -264
2019-12-31 22:00:00   -263
2019-12-31 23:00:00   -260
Freq: H, Name: Temperature, Length: 8760, dtype: int64

In [271]: temperature.groupby(temperature.index.date).agg(["mean", "min", "max"])                                                                     
Out[271]: 
                  mean  min  max
2019-01-01   -9.791667  -17   -1
2019-01-02  -15.458333  -21  -10
2019-01-03  -18.791667  -32   -9
2019-01-04  -12.625000  -25   -4
2019-01-05   -7.000000  -18    5
...                ...  ...  ...
2019-12-27 -247.500000 -253 -241
2019-12-28 -257.916667 -267 -243
2019-12-29 -256.083333 -262 -247
2019-12-30 -260.750000 -270 -251
2019-12-31 -262.375000 -270 -255

[365 rows x 3 columns]
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

@__blackjack__: So wie ich das verstehe hat er gar keine Zeitangaben als extra Spalte, sondern nur die Spalte der Temperaturangaben.
Benutzeravatar
__blackjack__
User
Beiträge: 13927
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Jankie: Ja und? Ich hatte auch keine Zeitangaben sondern nur ein Array mit Zufallswerten. Wenn man keinen passenden Index hat, erstellt man sich den halt.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
Antworten