Alternative zur TimeGrouper-Funktion in Pandas
Das Gruppieren von Daten ist ein sehr häufiger Vorgang, der beim Arbeiten mit Daten ausgeführt wird. Um Daten zu verstehen, müssen wir sie oft gruppieren, um Beziehungen oder bestimmte Werte zu sehen.
Innerhalb von Pandas können einige Funktionen verwendet werden, um Datenrahmen basierend auf bestimmten Anforderungen zu gruppieren. Eine solche Funktion war die Funktion TimeGrouper
, die es uns ermöglicht, Daten basierend auf Zeitobjekten zu gruppieren, aber diese Funktion ist seit langem veraltet.
Dieser Artikel behandelt die Alternative zur TimeGrouper
-Funktion in Pandas und wie man sie benutzt.
die TimeGrouper
-Funktion ist veraltet
Die TimeGrouper
-Funktion, die mit der groupby
-Funktion verwendet wurde, wurde in der Pandas-Version 0.21.0 lange zugunsten der Pandas Grouper()
Funktion, die es uns ermöglicht, Daten basierend auf einer groupby
-Anweisung für ein Objekt (einschließlich des time
-Objekts).
Verwenden Sie die Grouper()
-Funktion
Wie bereits erwähnt, ermöglicht die Grouper()
Funktion Benutzern, eine groupby()
-Funktion für ein Objekt anzugeben und auszuwählen, welche Spalte wir als Schlüsselparameter haben möchten, auf der die Gruppierung erfolgt.
Wenn Sie beispielsweise zusätzlich zu DateTime-Spalten nach Nicht-DateTime-Spalten gruppieren, ist groupby()
der geeignete Ort, um pd.Grouper()
zu verwenden. Wir können immer resample()
verwenden, wenn Sie nur nach einer Frequenz gruppieren müssen.
Lassen Sie uns die Funktionsweise von Grouper()
veranschaulichen, indem wir nach Nicht-DateTime-Spalten gruppieren und die Monatsende-Häufigkeit
verwenden, die durch das M
definiert wird, das an das freq
Argument übergeben wird.
Lassen Sie uns zunächst die Daten erstellen, die wir mit der Bibliothek numpy
gruppieren werden.
Code:
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': np.random.choice(['x', 'y'], size=50),
'b': np.random.rand(50)},
index=pd.date_range('2022', periods=50))
print(df.head())
Ausgang:
a b
2022-01-01 x 0.365385
2022-01-02 y 0.484075
2022-01-03 y 0.863266
2022-01-04 x 0.319142
2022-01-05 x 0.386386
Nun, da wir die Daten haben, wenden wir die Funktion Grouper()
auf die Daten an, indem wir basierend auf der Häufigkeit am Monatsende
mit dem Durchschnitt
der berechneten Gruppierungen gruppieren.
newDf = df.groupby(pd.Grouper(freq="M")).mean()
print(newDf)
Ausgang:
b
2022-01-31 0.582896
2022-02-28 0.451495
Wir haben die Daten also erfolgreich nach der Häufigkeit am Monatsende
gruppiert. Wir können die Daten auch basierend auf der Spalte a
und der Häufigkeit am Monatsende
mit dem Durchschnitt der berechneten Gruppierungen gruppieren.
otherDf = df.groupby([pd.Grouper(freq="M"), "a"]).mean()
print(otherDf)
Ausgang:
b
a
2022-01-31 x 0.401720
y 0.473320
2022-02-28 x 0.760869
y 0.312064
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn