Ich versuche, Werte aus einer Zeitreihe (stündliche und subhourly Temperaturwerte) innerhalb eines Zeitfensters bin. Das heißt, von ursprünglichen Stundenwerten möchte ich bined Werte auf einer täglichen, wöchentlichen oder monatlichen Basis extrahieren. Ich habe versucht, groupby
+ TimeGrouper(" ")
mit pd.cut
zu kombinieren, mit schlechten Ergebnissen.Doppelte Gruppierung von Daten nach Bins UND Zeit mit Pandas
Ich bin auf eine nette Funktion von diesem tutorial gestoßen, der vorschlägt, die Daten zuzuordnen (assoziierend zu jedem Wert mit seinem abgebildeten Bereich in der nächsten Spalte) und dann entsprechend gruppieren.
def map_bin(x, bins):
kwargs = {}
if x == max(bins):
kwargs['right'] = True
bin = bins[np.digitize([x], bins, **kwargs)[0]]
bin_lower = bins[np.digitize([x], bins, **kwargs)[0]-1]
return '[{0}-{1}]'.format(bin_lower, bin)
df['Binned'] = df['temp'].apply(map_bin, bins=freq_bins)
jedoch in einer Indexerror diese Funktion Ergebnisse der Anwendung: index n ist außerhalb der Grenzen für die Achse 0 mit der Größe n.
Idealerweise möchte ich das funktionieren lassen und es anwenden, um gleichzeitig eine doppelte Gruppierung zu erreichen: eins nach Bins und eins nach Timegrouper.
Alton, würde ich beide von Bins Gruppe gerne und von Tag/Woche, zugleich – Andreuccio
Also, wenn ich das richtig verstehe, wollen Sie alle Messungen aus dem gleichen Zeit gemittelt werden und dann diese nach Tag, Woche und Monat gruppieren? –
ha, das wäre zu einfach !! Angenommen, ich habe einen Sensor, der in stündlichen Intervallen eine Raumtemperatur aufzeichnet (es ist tatsächlich 10/15 Minuten, aber ich habe es in Pandas neu abgetastet). Also mein df ist sehr einfach: erste Spalte: Zeitstempel (indiziert), zweite Spalte: Temperatur Wenn meine bins waren [20, 22,24,26,28,30], würde ich gerne die Daten in solchen gruppieren eine Art, dass ich weiß, wie viele Datenpunkte (dh wie viele stündliche Temperaturwerte) in den 20 <<22, wie viele 22 <<24 etc. für jeden Tag und für jede Woche waren. Macht das Sinn? – Andreuccio