pandas: Umgang mit Wochentagen und Monaten

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
heyJo
User
Beiträge: 23
Registriert: Mittwoch 24. Januar 2018, 20:49
Wohnort: Köln

Hallo,

ich habe mal eine Frage, wie ich folgendes Problem am besten lösen kann:

Ein pandas Dataframe soll ausgewertet und die Ergebnisse in Form von Diagrammen dargestellt werden.


Zeitstempel;Wert1;Wert2
2018-01-01 00:00:29;39;6
2018-01-01 00:01:11;50;17
2018-01-01 00:03:15;60;7
2018-01-01 00:04:00;62;9
2018-01-01 00:04:31;82;19
2018-01-01 00:06:44;39;6
2018-01-01 00:06:53;78;15
2018-01-01 00:08:34;61;8
2018-01-01 00:12:08;54;21
2018-01-01 00:14:17;42;9
2018-01-01 00:19:01;49;16
2018-01-01 00:20:21;65;12
2018-01-01 00:20:45;85;52
2018-01-01 00:21:11;39;6
2018-01-01 00:21:24;42;9
2018-01-01 00:21:27;69;16
2018-01-01 00:22:21;59;6
2018-01-01 00:22:35;58;5
2018-01-01 00:22:40;41;8
2018-01-01 00:25:17;46;13
2018-01-01 00:25:42;75;12
2018-01-01 00:29:59;43;10
2018-01-01 00:30:16;67;14

Eine Spalte enthält eine Zeitangabe im Format "2018-05-10 12:35:20" als "datetime"-Datentyp.
Die Spalte kann grundsätzlich mehrere gleiche Zeitangaben enthalten.

Ich möchte Auswertungen in Bezug auf einen Wochentag (Montag-Sonntag), Kalenderwoche und Monat durchführen.
Dazu habe ich jeweils "Hilfsspalten" in das Dataframe eingefügt und mit den entsprechenden Werten gefüllt.

Spalte mögliche Werte
Wochentag: Montag, Dienstag, ...
Kalenderwoche: 1,2, ...
Monat: Januar, Februar, ...

Bis zu diesem Punkt gab es kein Problem.

Aber Ihr ahnt es schon:

Bei der Erzeugung von Diagrammen bzw. der Beschriftung taucht nun das Problem auf:
- April kommt hier vor Januar
- Dienstag vor Montag
So, wie es nicht sein sollte.

Jetzt könnte man hingehen und statt mit den Namen (Montag) mit der "Nummer des Wochentags/Monats" arbeiten und am Ende bei/vor der Diagrammbeschriftung ein Mapping vornehmen. Aber irgendwie ist das ja nicht Python-Like.

Von daher habe ich zwei Fragen:
Ist es überhaupt sinnvoll das Dataframe um die "Hilfsspalten" zu erweitern (und das am Ende irgendwie hin wursteln)?

Oder löst man das Problem besser erst beim Gruppieren der Daten "on-the-fly" über eine pandas-Funktionalität/Funktion?


Alt:
df[["Wert1","Wochentag"]].groupby(["Wochentag"]).count()

Neu:
df[["Wert1","Wochentag->über eine Funktionalität, die ich nicht kenne<-"]].groupby(["Wochentag"->über eine Funktionalität, die ich nicht kenne<-]).count()

Über Stichworte und Hinweise, wie ich das Problem lösen kann, würde ich mich freuen.
Benutzeravatar
__blackjack__
User
Beiträge: 13110
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich würde über die Datetime-Spalte entsprechend filtern/gruppieren und so etwas wie Tages- und Monatsnamen bei der Formatierung der Beschriftung lösen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten