pandas: Umgang mit Wochentagen und Monaten

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
heyJo
User
Beiträge: 25
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: 14210
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.
“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
Antworten