Alternative zur TimeGrouper-Funktion in Pandas

Olorunfemi Akinlua 21 Juni 2023
  1. die TimeGrouper-Funktion ist veraltet
  2. Verwenden Sie die Grouper()-Funktion
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 Akinlua avatar Olorunfemi Akinlua avatar

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

Verwandter Artikel - Pandas Function